1

Sketchflow でプロトタイプ化された WPF アプリケーションを継承しました。UI に機能を追加する作業を行っています。

現在、画面から画面へのナビゲーションは、次のように XAML でイベントとして定義されています。

<i:Interaction.Triggers>
    <i:EventTrigger EventName="Click">
    <pi:NavigateToScreenAction TargetScreen="WpfPrototype1Screens.Screen_1_2"/>
    </i:EventTrigger>
</i:Interaction.Triggers>

これは機能しますが、問題は、新しい画面に移動する前にユーザー入力を検証できないことです。

私が知りたいのは、C# のボタンのクリック イベント ハンドラー内からプログラムで新しい画面に移動するにはどうすればよいですか?

例えば:

private void Button1_Click_1(object sender, RoutedEventArgs e)
{
    if (userInputValid)
    {
        NavigateToScreen_1_2();
    }
}
4

1 に答える 1

2

これは、次の画面がどのように使用されるかに大きく依存します。アプリケーションの別の部分に挿入されているのが UserControl (View) である場合、たとえば ContentControl を例にとると、Content コントロールのコンテンツを新しい画面に変更するだけです。

MVVMと組み合わせたCommands in WPFをご覧ください。これは、問題の解決に役立ちます。OnClick イベントを使用する代わりに、Views ViewModel 内で実行関数を定義し、ボタンの Command プロパティにバインドできるパブリック プロパティを設定します。

このような。

簡単なクラスを用意します:

public class MainViewModel
{
    public MainViewModel()
    {
        NextViewCommand = new DelegateCommand(NextView);
    }

    public ICommand NextViewCommand {get;set;}
    public UserControl NewView {get;set;}

    public void NextView()
    {
         NewView = new UserControl() //set your NewView property to your new usercontrol 
         //Apply validation on all your binded properties you want to validate.
    }
}

委任コマンド

以下を使用して、ViewModel を View に結び付けます。

this.DataContext = new MainViewModel();

そして、次を使用してコマンドをボタンに接続します。

<Button content="Next view" Command="{Binding NextViewCommand}"/>

これが最善の方法であり、あなたを助けると思います。

于 2013-04-29T07:21:04.990 に答える