簡體   English   中英

禁用ContextMenu \\右鍵單擊特定條件的Gridview行

[英]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.

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