[英]Disable ContextMenu\right click on a Gridview row for a particular condition
我是wpf的新手。 我在WPF項目中有一個網格
<GridView x:Name="Train_View_Grid">
<GridViewColumn DisplayMemberBinding="{Binding Path=Status}" Header="Status"/>
</GridView>
其中具有右鍵單擊時出現的上下文菜單(right_Click)。
我必須禁用狀態為已完成的行的右鍵單擊。(列之一是狀態,其值可以完成或正在運行)但是如果狀態為正在運行,則必須顯示右鍵菜單。
private void PEGrid_PreviewMouseRightButtonDown(object sender, MouseButtonEventArgs e)
{
hideContextMenu();
}
private void hideContextMenu()
{
if (Train_Details_View.SelectedItems.Count > 0)
{
DataRowView drv = Train_Details_View.SelectedItems[0] as DataRowView;
String journey_status = drv.Row["Status"].ToString();
if (journey_status.Equals("Finished"))
{
ContextMenu.Visibility = Visibility.Hidden;
}
}
}
我在上下文菜單的網格上將其稱為
<Grid x:Name="Train_Info_Pnl" Grid.Column="2" Margin="0,0,10,0" Grid.Row="1" ScrollViewer.HorizontalScrollBarVisibility="Auto" ScrollViewer.CanContentScroll="True" PreviewMouseRightButtonDown="PEGrid_PreviewMouseRightButtonDown" >
我上面的代碼正確嗎,我應該在哪里調用? 如果我的代碼是錯誤的,我該如何糾正。
您不能在ContextMenuService.IsEnabled上設置觸發器。 這是一個純xaml工作示例:
<Grid>
<ListView x:Name="LV">
<ListView.ContextMenu>
<ContextMenu>
<Label Content="Your menu item..."/>
</ContextMenu>
</ListView.ContextMenu>
<ListView.View>
<GridView>
<GridViewColumn DisplayMemberBinding="{Binding Path=IsChecked}"
Header="IsFinished"/>
</GridView>
</ListView.View>
<ListView.Style>
<Style>
<Style.Triggers>
<DataTrigger Binding="{Binding SelectedItem.IsChecked,
ElementName=LV}" Value="True">
<Setter Property="ContextMenuService.IsEnabled"
Value="False"/>
</DataTrigger>
</Style.Triggers>
</Style>
</ListView.Style>
<CheckBox IsChecked="False"/>
<CheckBox IsChecked="True"/>
</ListView>
</Grid>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.