gpt4 book ai didi

.net - 绑定(bind)到 DataTemplate 中的父 DataContext

转载 作者:行者123 更新时间:2023-12-04 10:01:46 25 4
gpt4 key购买 nike

我正在尝试将 MenuItem 的命令绑定(bind)到 UserControl.DataContext 中包含的命令.我发现了几个类似的问题,但根据他们的解决方案对我来说是失败的:

<UserControl ...>
<UserControl.Resources>
<DataTemplate x:Key="TileItemStye">
<Grid Width="100" Height="100">
<Grid.ContextMenu>
<ContextMenu>
<MenuItem Header="Remove"
Command="{Binding DataContext.RemoveItem,
RelativeSource={RelativeSource FindAncestor,
AncestorType=UserControl}}">
</MenuItem>
</ContextMenu>
</Grid.ContextMenu>
</Grid>
</DataTemplate>
</UserControl.Resources>
<Grid>
<ListView ItemsSource="{Binding Path=Files}"
ItemTemplate="{DynamicResource TileItemStye}" >
<ListView.ItemsPanel>
<ItemsPanelTemplate>
<WrapPanel />
</ItemsPanelTemplate>
</ListView.ItemsPanel>
</ListView>
</Grid>

UserControl 的 DataContext 是 ViewModel 与 ICommand RemoveItem 和 ObservableCollection<FileViewModel>文件。

最佳答案

如果您使用的是 .NET 4,则确实有一个更优雅的解决方案:

<UserControl Name="uc" ...>
<!-- ... -->
<MenuItem Header="Remove"
Command="{Binding DataContext.RemoveItem,
Source={x:Reference uc}}"/>

(这要求模板留在Resources中,否则会出现循环依赖错误)

关于.net - 绑定(bind)到 DataTemplate 中的父 DataContext,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7594438/

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