我的問題與以下代碼綁定MyListBoxItem
類的IsAvailable
屬性。我目前的解決方案:ListBoxItem模板內的控件風格的相對綁定
<ListBox ItemTemplate="{StaticResource myTemplate}">
<ListBox.Resources>
<DataTemplate x:Key="myTemplate" DataType="{x:Type local:MyListBoxItem}">
<Label Foreground="Green" Content="{Binding Title}" Tag="{Binding IsAvailable}">
<Label.Style>
<Style TargetType="{x:Type Label}">
<Style.Triggers>
<DataTrigger Binding="{Binding Tag, RelativeSource={RelativeSource Self}}" Value="True">
<Setter Property="FontWeight" Value="Bold"/>
</DataTrigger>
</Style.Triggers>
</Style>
</Label.Style>
</Label>
</DataTemplate>
... (more datatemplates)
</ListBox.Resources>
</ListBox>
我的問題:在我的解決方案的IsAvailable
值「經過」兩個綁定。第一個將值綁定到Label
的Tag
屬性,然後在樣式觸發器中,觸發器檢查其值並設置Label
的屬性。當我使用Binding="{Binding IsAvailable, RelativeSource={RelativeSource AncestorType={x:Type local:MyListBoxItem}}}"
時,它不起作用,因爲Style
無法看到Label
(或類似原因)的任何祖先,所以導致綁定錯誤(代碼爲4或40),對於添加到ListBox
的每個項目。
所以最後:我可以讓解決方案更簡單,還是沒有其他(更好)的解決方案?
我忘了提一個重要的事情,對不起:我把ListBox的資源DataTemplate
,因爲我有更多的模板(他們基本上是不同的,所以我不能用觸發器他們的風格),我有時需要切換...