我真的是WPF中的新手。我嘗試在代碼中爲控件屬性設置默認值,並希望在datacontext(VM)可用時通過數據綁定覆蓋該屬性。但數據綁定在這種情況下不起作用。在'後面的代碼'中設置的WPF控件屬性,忽略綁定後
實施例:
代碼後面:
public partial class MyViewControl : UserControl { public MyViewControl() { InitializeComponent(); // it works if I remove this line panelControl.Visibility = Visibility.Hidden; } }
XAML用戶控件:
<DockPanel Name="panelControl" Visibility="{Binding
MyViewModelProperty_IsVisible_ConvertedToVisibility}">
XAML主窗口:
<my:MyViewControl DataContext="{Binding ElementName=lbListBox,
Path=SelectedItem}"/>
實際上,FallbackValue參數適用於這種情況,但我想知道技術原因,爲什麼控制屬性在代碼設置後無法綁定?
*不能綁定**之後**它是由代碼設置* - 不是真正的後,綁定發生在'InitializeComponent'(**之前**你覆蓋它),在你的代碼中,你只需覆蓋綁定設置後(意味着不再有約束力)。在該行之後再次嘗試設置綁定。問題是你爲什麼這樣做? – Sinatr
最初我試圖設置一個默認值。但是我已經找到了** FallbackValue **參數,它正在爲此目的而工作。所以這個問題上升了,以瞭解框架是如何工作的... – tcpw