【问题标题】:ListView: Change ContextMenu Header According To Column Value (Style Trigger?)ListView:根据列值更改 ContextMenu 标题(样式触发器?)
【发布时间】:2019-03-16 00:30:28
【问题描述】:

大家晚上好,

我正在尝试根据来自所述 ListView 的列值更改 WPF ListView ContextMenu 标题。具体来说,当列绑定到 STATUS = "Y"(hold) 或 "N"(not on hold) 的值时,我想将其从 Enable 更改为 Disable(反之亦然)。我尝试了以下方法:

 <ContextMenu.Resources>
     <Style TargetType="{x:Type MenuItem}">
         <Style.Triggers>
             <DataTrigger Binding="{Binding STATUS}" Value="Y">
                 <Setter Property="Header" Value="Enable" />
             </DataTrigger>
             <DataTrigger Binding="{Binding STATUS}" Value="N">
                 <Setter Property="Header" Value="Disable" />
             </DataTrigger>
          </Style.Triggers>
      </Style>
 </ContextMenu.Resources>

第二次尝试:

 <ListView.ContextMenu>
                <ContextMenu x:Name="cmlv">
                    <MenuItem x:Name="cmdisableenable">
                        <MenuItem.Resources>
                            <Style TargetType="{x:Type MenuItem}">
                                <Style.Triggers>
                                    <DataTrigger Binding="{Binding STATUS}" Value="Y">
                                        <Setter Property="Header" Value="Enable" />
                                    </DataTrigger>
                                    <DataTrigger Binding="{Binding STATUS}" Value="N">
                                        <Setter Property="Header" Value="Disable" />
                                    </DataTrigger>
                                </Style.Triggers>
                            </Style>
                        </MenuItem.Resources>
                    </MenuItem>
                </ContextMenu>
            </ListView.ContextMenu>

【问题讨论】:

    标签: c# wpf xaml listview


    【解决方案1】:
               <MenuItem>
                        <MenuItem.Resources>
                                <Style TargetType="{x:Type MenuItem}">
                                    <Style.Triggers>
                                        <DataTrigger Binding="{Binding STATUS}" Value="Y">
                                            <Setter Property="Header" Value="Enable" />
                                        </DataTrigger>
                                        <DataTrigger Binding="{Binding STATUS}" Value="N">
                                            <Setter Property="Header" Value="Disable" />
                                        </DataTrigger>
                                    </Style.Triggers>
                                </Style>
    
                        </MenuItem.Resources>
                    </MenuItem>
    

    您已在 MenuItem 上应用样式,因此取决于标题将禁用或启用的状态,并确保您没有为标题分配任何值

    【讨论】:

    • 我试过了(第二次尝试),我也尝试使用 lvoperators.STATUS 进行绑定(它运行了,但我仍然没有设置标题)。我可以尝试任何其他想法(我认为这很接近)?
    • @DevelopingDEV 它对我有用,好的,我附上了项目,也看看添加缺少的重量,我试图帮助(项目)[drive.google.com/file/d/1ZIbLcVF8a2A2s0HffpnnR7BsPGE4njS0/…
    • 我确实得到了这个工作,但该属性被应用于所有列表视图项目(这也是您的示例也说明的内容)。我发现 Opened 事件对我有用,但是当我第一次尝试它时,我激活了多选,这阻碍了我想要的效果。感谢您的帮助。
    • @DevelopingDEV 随时
    猜你喜欢
    • 2018-10-17
    • 1970-01-01
    • 1970-01-01
    • 2021-09-17
    • 2021-09-08
    • 1970-01-01
    • 1970-01-01
    • 2017-12-16
    • 2013-04-24
    相关资源
    最近更新 更多