簡體   English   中英

如果父屬性為 null,則 WPF 嵌套屬性綁定不起作用

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM