禁用ContextMenu \右键单击Gridview行以查找特定条件

时间:2014-09-25 10:33:14

标签: c# wpf

我是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" >

我的代码是否正确,我应该在哪里调用它? 如果我的代码错了,我怎么能纠正它..

1 个答案:

答案 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>