簡體   English   中英

WPF。 禁用/啟用ListBox項ContextMenu和MVVM

[英]WPF. Disable/Enable ListBox items ContextMenu & MVVM

我有一個包含多個項目的列表框。 該項目可能處於3種狀態:

  • 未連接
  • 連接的
  • 活性

我需要在每個項目上分配一個上下文菜單。 實際上,我想要一個菜單​​項列表供每個列表框項重用,並且我想根據其狀態禁用/啟用菜單項。 我正在使用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 {...} )。 這是一個好方法還是我在這里做錯了什么?

謝謝

我認為這是一個UI邏輯,您不應該用XAML編寫它。.我建議您可以有一個綁定到列表框項目的類,並且該類將具有狀態對象或屬性,該對象或屬性將維護啟用/禁用邏輯用於上下文菜單。 您可以將此屬性綁定到上下文菜單。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM