gpt4 book ai didi

xaml - 如何将命令添加到 ListBox.ItemTemplate

转载 作者:行者123 更新时间:2023-12-04 03:34:24 29 4
gpt4 key购买 nike

我有一个使用 MVVM 的 WPF 应用程序。

此代码来 self 的 ResourceDictionary.xaml

  <DataTemplate x:Key="LogListTemplate">
<ListBox ItemsSource="{Binding LogList, UpdateSourceTrigger=PropertyChanged}" Style="{StaticResource HorizontalListBoxItem}">
<ListBox.ItemTemplate>
<DataTemplate>
<Border Style="{StaticResource ErrorBorders}">
<StackPanel ToolTip="{Binding Details}" Width="250">
<TextBlock Text="{Binding Title}" />
<TextBlock Text="{Binding Details}" TextWrapping="Wrap" />
<Button Command="{Binding AddToTempDtdFileCommand}" CommandParameter="{Binding Details}" Content="Ignore" />
</StackPanel>
</Border>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
</DataTemplate>

当我点击按钮时,命令不执行。测试证实这是因为我的 Button 位于 ListBox 中。

我的问题是我无法将按钮移出列表框,原因有两个。

1. Asthetics/UI (the button has belong with the information)  
2. Binding to the LogList is done from within the ListBox.ItemTemplate

有人有什么建议吗?

最佳答案

如果命令在 ViewModel 中定义,您可以使用 RelativeSource 访问它。 RelativeSource 可以找到一个祖先(即您的 View),因此您可以使用它的 DataContext(您的 ViewModel)。

<Button Command="{Binding DataContext.AddToTempDtdFileCommand, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type YourViewClass}}}" CommandParameter="{Binding Details}" Content="Ignore" />

关于xaml - 如何将命令添加到 ListBox.ItemTemplate,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15929092/

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