3

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

此代码来自我的 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 中。

我的问题是我无法将按钮移出 ListBox 有两个原因。

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

有没有人有什么建议?

4

1 回答 1

3

如果命令在 中定义,ViewModel您可以使用RelativeSource. RelativeSource可以找到一个祖先(这是你的View),所以你可以使用它的DataContext(你的ViewModel)。

<Button Command="{Binding DataContext.AddToTempDtdFileCommand, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type YourViewClass}}}" CommandParameter="{Binding Details}" Content="Ignore" />
于 2013-04-12T10:26:32.103 回答