讓我簡單介紹一下我的問題。DataTrigger在ListBox.ItemTemplate中不起作用
我有一個窗口,有一個ViewModel作爲數據上下文。該窗口中還有2個用戶控件。這些用戶控件具有綁定到ViewModel中的屬性的各種xaml對象,並且我沒有任何其他屬性的問題。
我遇到的問題是我創建的數據觸發器不會觸發。您可以在下面看到我嘗試過的數據觸發器的xaml:
注意: IsBold是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,但我該如何移動它?或者,即使是正確的做法?
我希望我在所有必要的領域都足夠清楚,但如果我不是,我當然可以在需要的地方詳細說明。
感謝您的幫助!
如果你逐個行註釋掉,錯誤最終會消失,並在什麼行?該錯誤消息似乎與顯示的代碼無關。 – Josh 2012-08-16 16:28:06
這本身並不是一個錯誤。當我運行程序時,它在輸出窗口中顯示一個綁定錯誤。如果我註釋掉了這些行,那麼綁定就不會發生。 – khrave 2012-08-16 16:38:59