[英]WPF nested property binding not working if parent property is null
我有以下情況:
<DatePicker IsEnabled="{Binding ParentObject.EditAvailable}"
現在,如果我在我的 ViewModel ParentObject
設置為null
這也是DataContext
,則DatePicker
上的IsEnabled
屬性將設置為true
如果正確設置了ParentObject
,則綁定對所有實例都完全正確。
但我在 WPF 中並沒有真正理解這種行為。
一種解決方法是使用:
<DatePicker IsEnabled="{Binding ParentObject.EditAvailable, FallbackValue=False}"
因此,現在如果ParentObject
通過我的 ViewModel 設置為null
,則DatePicker
上的IsEnabled
屬性返回false
。
如果不在項目中的每個控件上設置FallbackValue
,我能做些什么嗎? 它已經很大了,我需要找到一種解決方案,以某種方式將其作為默認行為,如果ParentObject
是 null,則有一個默認值設置為 default(bool)、default(string) 等。
任何幫助深表感謝。
您可以在包含控件的面板或網格上設置IsEnabled
,它將影響它包含的所有控件。
<StackPanel IsEnabled="{Binding ParentObject.EditAvailable, FallbackValue=False}">
<DatePicker />
<DatePicker />
<DatePicker />
</StackPanel>
如果不在項目中的每個控件上設置 FallbackValue,我能做些什么嗎?
不,除了用默認設置FallbackValue
的自定義綁定替換每個綁定。 有關示例,請參見此答案。
您仍然必須在任何地方用{local:YourBinding
替換{Binding
。
如果綁定路徑始終相同,則可以使用 DatePicker 的默認樣式:
<Style TargetType="DatePicker">
<Setter Property="IsEnabled" Value="{Binding ParentObject.EditAvailable, FallbackValue=False}"/>
</Style>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.