我是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" >
我的代码是否正确,我应该在哪里调用它? 如果我的代码错了,我怎么能纠正它..
答案 0 :(得分:1)
您无法在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>