让我简要概述一下我的问题。
我有一个以 ViewModel 作为数据上下文的窗口。此窗口中还有 2 个用户控件。这些用户控件具有绑定到 ViewModel 中的属性的各种 xaml 对象,并且我对任何其他属性都没有问题。
我遇到的问题是我创建的数据触发器不会触发。您可以在下面看到我尝试过的数据触发器的 xaml:
注意: IsBold 是我用于 Window 的 ViewModel 中的一个属性。我的印象是窗口中的用户控件将从父级继承数据上下文,所以我不认为这是我的问题。
<ScrollViewer >
<ListBox
ItemsSource="{Binding Path=Listings}"
SelectionMode="Single"
SelectedValue="{Binding Path=SelectedListingItemID}"
SelectedValuePath="ItemID"
Grid.IsSharedSizeScope="True">
<ListBox.ItemTemplate>
<DataTemplate>
<Grid>
<TextBlock>
<TextBlock.Style>
<Style TargetType="TextBlock">
<Setter Property="Text" Value="NotTriggered" />
<Style.Triggers>
<DataTrigger Binding="{Binding Path=IsBold}" Value="True">
<Setter Property="Text" Value="Triggered" />
</DataTrigger>
</Style.Triggers>
</Style>
</TextBlock.Style>
</TextBlock>
</Grid>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
</ScrollViewer>
当我运行它时,我会得到输出语句:
BindingExpression 路径错误:在“对象”“DataRowView”上找不到“DataContext”属性
此消息使我相信我需要将数据触发器移动到 xaml 的另一部分,以便它意识到该属性来自 ViewModel 而不是 ListBoxItem,但我应该将它移动到哪里?或者这甚至是正确的做法?
我希望我在所有必要的领域都足够清楚,但如果我不是,我当然可以在需要的地方详细说明。
谢谢你的帮助!