我在WPF方面非常新手。我尝试在代码中为控件属性设置默认值,并希望在数据上下文(VM)可用时通过数据绑定覆盖该属性。但在这种情况下,数据绑定不起作用。
示例:
代码:
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