私はMVVMの初心者です。メインUIを持つmainwindow.xamlファイルを含むメインプロジェクト「MVVMデモ」があります。アイテムのセットを含むリストボックスがあります。
<ListBox Name="ButtonPanel" ItemsSource="{Binding BoardTabs}" SelectedItem="{Binding SelectedTab, Mode=TwoWay}" >
<ListBox.ItemTemplate>
<DataTemplate>
<StackPanel>
<TextBlock Text="{Binding Connect}" >
</TextBlock>
<TextBlock Text="{Binding I2C}" >
</TextBlock>
<TextBlock Text="{Binding Voltage}" >
</TextBlock>
<TextBlock Text="{Binding Clock}" >
</TextBlock>
<TextBlock Text="{Binding Codec}" >
</TextBlock>
<TextBlock Text="{Binding EEPROM}" >
</TextBlock>
</StackPanel>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
新しいユーザーコントロールを開くには、リストボックスの各項目が必要です。メインプロジェクト(ソリューションファイルの2番目のプロジェクト)の外部に個別のユーザーコントロールを作成し、メインプロジェクト(ボードコントロールmvvm)への参照として追加したことに注意してください。
VoltageはuserControlの1つであり、私のUiが存在するVoltage.xamlファイルがあり、ビュー、モデル、およびビューモデルのクラスが異なります。Board Control MVVMプロジェクトにあるMainWindow.xamlの電圧項目(リストボックス内のテキストブロック)をクリックすると、新しいウィンドウとしてポップアップ表示されます。
これが、mainwindow.xamlUIからタブを選択する私のProductViewモデルクラスです。
private Product m_SelectedTab;
public Product SelectedTab
{
get
{
return m_SelectedTab;
}
set
{
m_SelectedTab = value;
NotifyPropertyChanged("SelectedTab");
}
}
Listbox(mainwindow.xaml)でアイテムを選択すると、ウィンドウのシャッドがポップアップし、上にあるVoltage.xamlUIが表示されます。明確な説明のためにさらにコードが必要な場合は、ここにアップロードしたいと思います。
助けてください :(