1

私は WPF が初めてで、それに慣れるために簡単なテスト アプリを作成しています。私のテスト アプリは、コンピューターに接続されているすべてのジョイスティックを検出し、それに関する情報を表示します。これまでのところ、私はこのViewModelを持っています:

public class JoystickViewModel
{
    public ObservableCollection<Joystick> Joysticks { get; set; }

    public JoystickViewModel()
    {
        GetAttachedJoysticks();
    }

    private void GetAttachedJoysticks()
    {
        // populate Joysticks collection by using SlimDX
    }
}

そして、これは私のコードビハインドですMainWindow.xaml:

public partial class MainWindow : Window
{
    public MainWindow()
    {
        InitializeComponent();

        DataContext = new JoystickViewModel();
    }
}

そして私のXAML MainWindow

<Window ...>
    <Grid>
        <ComboBox ItemsSource="{Binding Joysticks}"
                  DisplayMemberPath="Information.ProductName"/>
    </Grid>
</Window>

コンストラクターに ViewModel も設定するチュートリアルに従いました。

私の質問は、ViewModel にどのように入力すればよいですか? ViewModel コンストラクターでコレクションを作成しているのは、ちょっと奇妙に思えます。代わりに、このロジックを MainWindow の分離コードに含める必要がありますか? それともまったく別の場所ですか?最終的な目標は、このコレクションにデータを入力するだけでなく、定期的に更新して現在の状態 (ユーザーが新しいジョイスティックを接続した、既存のジョイスティックを取り外したなど) を反映することです。

4

2 に答える 2

0

Model クラスには、JoySticks の監視可能なコレクション プロパティ (およびそれを設定するコード) が含まれます。ビューモデルは、この同じプロパティをバインドのためにビューに公開するだけです。vm は可能な限り薄くする必要があります。理想的には、バインド用のモデルにあるプロパティを公開するだけで、「ビジネス」ロジックを一切実行しません (つまり、あなたの場合のようにジョイスティック情報を入力します)。

于 2013-02-04T10:57:42.627 に答える