gpt4 book ai didi

WPF + 使用 MVVM 的上下文菜单项的绑定(bind)命令和标题

转载 作者:行者123 更新时间:2023-12-03 10:18:25 26 4
gpt4 key购买 nike

我创建了一个 WPF 应用程序并遵循 MVVM 模式。我的 xaml 中有一个上下文菜单,我需要绑定(bind)命令和标题文本。使用以下代码,我可以将上下文菜单的标题与“MenuItemName”绑定(bind),这是 BOList 中的一个属性,它是一个可观察的集合。我的问题是该命令没有被解雇?我将上下文菜单的项目源更改为 datacontext

(DataContext="{Binding Path=PlacementTarget.Tag, RelativeSource={RelativeSource Self}}") 

命令工作正常,但我的标题变得空白。有没有办法绑定(bind)我的标题和菜单项的命令?这里的命令 MenuClick 是 VM 中的 Icommand 属性,而 MenuItemName 是 BOList 中的属性,它是绑定(bind)到我的 ListBox 的可观察集合。
<Grid>
<StackPanel Orientation="Vertical">
<Button x:Name="btnClickMe" Command="{Binding ButtonCommand}" Content="Click Me" />
<ListBox ItemsSource="{Binding BOList}" x:Name="lstDemo" SelectedItem="{Binding BussinessObj,Mode=OneWayToSource}">
<ListBox.ItemTemplate>
<DataTemplate>
<StackPanel x:Name="stkStyleRender" Orientation="Horizontal" Background="Cyan" Width="525" Tag="{Binding DataContext, RelativeSource={RelativeSource AncestorType={x:Type ListBox}}}" >
<TextBlock x:Name="txtId" Text="{Binding FirstName}"></TextBlock>
<TextBlock x:Name="txtName" Text="{Binding LastName}"></TextBlock>
<StackPanel.ContextMenu>
<ContextMenu x:Name="cntMnuTest" ItemsSource ="{Binding Path=PlacementTarget.Tag, RelativeSource={RelativeSource Self}}" >
<MenuItem Header="{Binding MenuItemName}" Command="{Binding MenuClick}" CommandParameter="Icon"></MenuItem>
</ContextMenu>
</StackPanel.ContextMenu>

</StackPanel>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
</StackPanel>

最佳答案

嗨 确定了问题。

如果我们将上下文菜单的 Item Source 设置为 BOList (observable collection ) 命令不会被触发,因为 ICommand定义在 Window 数据上下文 (vm) 中。

我们需要明智地处理代码。

由于无法进行绑定(bind)调试,因此我在拐弯抹角:-)

这个链接对我帮助很大WPF Tutorial - Debug Databinding Issues in WPF

关于WPF + 使用 MVVM 的上下文菜单项的绑定(bind)命令和标题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6315520/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com