0
我需要做一些類似於PriorityBinding的操作,不同之處在於當綁定爲null時(而不是在綁定無效時,像在PriorityBinding中那樣)時使用較低優先級綁定。我似乎無法找到一種'好'的方法來做到這一點,但是並沒有創建兩個重複的控件,一個是我想要使用的每個綁定,另一個是基於綁定是否爲null來觸發它們的可見性。必須有更好的方法,因爲我不想在每次需要更改某些內容時更新兩個控件(重複代碼==不好)。當綁定值爲null時綁定到不同的屬性路徑
例子:
時SelectedItem.SelectedItem不爲空:
<ContentControl Content="{Binding SelectedItem.SelectedItem}"/>
當SelectedItem.SelectedItem爲空:
<ContentControl Content="{Binding SelectedItem}"/>
使用樣式像這樣沒有工作:
<ContentControl Content="{Binding SelectedItem.SelectedItem}">
<ContentControl.Style>
<Style TargetType="ContentControl">
<Style.Triggers>
<DataTrigger Binding="{Binding SelectedItem.SelectedItem}" Value="{x:Null}">
<Setter Property="Content" Value="{Binding SelectedItem}"/>
</DataTrigger>
</Style.Triggers>
</Style>
</ContentControl.Style>
</ContentControl>
我猜這不起作用,因爲樣式中的綁定試圖使用ContentControl的Content屬性作爲其源,所以DataTrigger正在測試SelectedItem.SelectedItem.SelectedItem.SelectedItem
。有任何想法嗎?
你可以使用一個轉換器,並結合像CONTENT =「{結合的SelectedItem,... }」。在轉換器中你檢查SelectedItem.SelectedItem - 屬性:if null返回SelectedItem,否則返回SelectedItem.SelectedItem –
如果你在轉換器中這樣做,我不認爲它會捕獲屬性更改,綁定如何知道SelectedItem。 SelectedItem已更改? –
使用MultiBinding;) –