いくつかのアイテムを含むリストボックスがあります。このアイテムは次の 3 つの状態にある可能性があります。
- 接続されていません
- 接続済み
- アクティブ
これらの各項目にコンテキスト メニューを割り当てる必要があります。実際には、リストボックス項目ごとに再利用するメニュー項目の 1 つのリストが必要であり、その状態に応じてメニュー項目を無効/有効にしたいと考えています。私はMVVMを使用しています。目標を達成するためのベストプラクティスは何ですか?
<DataTemplate x:Key="TemplateSelector">
<ContentPresenter Content="{Binding}" Name="contentPresenter">
<telerik:RadContextMenu.ContextMenu>
<telerik:RadContextMenu>
<telerik:RadMenuItem Header="Connect" Style="{StaticResource ResourceKey=ContextMenuStyle}" />
<telerik:RadMenuItem Header="Disconnect" />
<telerik:RadMenuItem Header="Delete Database" />
</telerik:RadContextMenu>
</telerik:RadContextMenu.ContextMenu>
</ContentPresenter>
<DataTemplate.Triggers>
<DataTrigger Binding="{Binding Path=ConnectionType}" Value="Disconnected">
<Setter TargetName="contentPresenter" Property="ContentTemplate" Value="{StaticResource OfflineDeviceItemTemlpate}" />
</DataTrigger>
<DataTrigger Binding="{Binding Path=ConnectionType}" Value="Internet">
<Setter TargetName="contentPresenter" Property="ContentTemplate" Value="{StaticResource OnlineDeviceItemTemplate}" />
</DataTrigger>
<DataTrigger Binding="{Binding Path=ConnectionType}" Value="Wifi">
<Setter TargetName="contentPresenter" Property="ContentTemplate" Value="{StaticResource OnlineDeviceItemTemplate}" />
</DataTrigger>
</DataTemplate.Triggers>
</DataTemplate>
</UserControl.Resources>
<Grid>
<telerik:RadListBox x:Name="lsbDevices" ItemsSource="{Binding Path=Devices}" ItemTemplate="{StaticResource TemplateSelector}"
SelectedItem="{Binding SelectedDevice, Mode=TwoWay}" Grid.Row="0" />
</Grid>
対応するメニュー項目を有効にするかどうかを示す ModelView の各メニュー項目のプロパティを追加することを考えています (たとえば、 public bool ConnectEnabled {...}
)。これは良いアプローチですか、それともここで非常に間違ったことをしていますか?
ありがとう