2
私はここで別のスレッドの助けを借りています。C#RelayCommandのTapHandlerがありません
複数の種類のテキストを区別して1つのテキストボックスのように見せるのはUserControlです。一部のタイプ(ハイパーリンク)はクリック可能です。
私はこのコードをクリックしています。
public class RelayCommand<T> : ICommand
{
readonly Action<T> _execute;
readonly Func<T, bool> _canExecute;
public event EventHandler CanExecuteChanged;
public RelayCommand(Action<T> execute, Func<T, bool> canExecute = null)
{
_execute = execute;
_canExecute = canExecute;
}
public void RefreshCommand()
{
var cec = CanExecuteChanged;
if (cec != null)
cec(this, EventArgs.Empty);
}
public bool CanExecute(object parameter)
{
if (_canExecute == null) return true;
return _canExecute((T)parameter);
}
public void Execute(object parameter)
{
_execute((T)parameter);
}
}
問題は今、リンクをクリックした後でTap/Clickイベントを停止したいという問題です。通常、イベントがバブリングするのを防ぐために、私はこれを行うでしょうe.Handled = True
。しかし、この場合、私はリンク上にTappEventを持っていません。
ユーザーコントロールの背後にあるコード - は、次のようになります。ウェブブラウザが開き
private void Init()
{
//ComplexTextPresenterElement.Input = "This is where the Content string has to be....";
ComplexTextPresenterElement.OnHyperlinkCommand = new RelayCommand<object>(Execute);
}
private async void Execute(object o)
{
List<object> passingParameters = new List<object>();
//put here the code that can open browser
if (o is HyperLinkPart)
{
var obj = (HyperLinkPart)o;
await Windows.System.Launcher.LaunchUriAsync(new Uri(obj.RealUrl, UriKind.Absolute));
} [...]
前に、私は、このユーザーコントロールの周囲のUI要素から呼び出されるTapEventを停止する必要があります。
これが十分な情報であることを希望します。そうでなければ私に教えてください。
乾杯、
Ulpin
Thxを、しかし、私はこれが届かない:webbrowerナビゲーション完了した場合には 変更
するために、この
は、次の手順を実行します。なぜこのブールは次のページに行かないのですか?問題は、UserControlの完全なサーフェスに、アプリケーションの次のページにタップした後に導くTappEventがあることです。今、そのユーザーコントロールの新しいリンクでは、新しいリンクをクリックするとこのTappEventを実行したくありません。私はこのTappEventを 'e.Handled = true'に設定することができないので、Webブラウザのナビゲーションが完了するはずっと前に、次のページに移動します。 もっとコードや詳細情報が必要な場合は教えてください。 – Ulpin
ユースケース/シナリオについて少し詳しく説明します。私は、コマンドがしたいことが何であるかについて混乱しています。 webviewがナビゲートしたり、イベント処理をタップしたりしていますか? –
これまで私が何をしているのですか?それはTwitterアプリケーションです。ツイートの周囲の空白をクリック/タップすると、このツイートを表示する新しいページに移動します。これは、私がUserControlとTappEventの意味です。私がやった次のことは、twitterコンテンツのテキストボックスを表す新しいUserControlを実装することです。上記のコード例では、ハイパーリンクを使ってパーツを投稿しただけですが、リンクする必要があるハッシュタグと@ -TwitterHandlesがあると想像することができます。 – Ulpin