我想根据xaml中指定的用户为UserControl选择不同的DataContext,假设我有一个用户控件:
public partial class UcMyControl : UserControl
{
public UcMyControl()
{
InitializeComponent();
if (Group == "Group1")
this.DataContext = DataContextA;
else if (Group == "Group2")
this.DataContext = DataContextB;
else
this.DataContext = ...;
}
public string Group { set; get; }
...
}
在XAML中:
<uc:UcMyControl Group="GroupA" />
但问题是,在ctor中Group始终为null,因此它不起作用......在为UcMyControl设置DataContext之前,我需要检查用户指定的值(在本例中为Group)。有办法解决它吗?
答案 0 :(得分:1)
使用实现实现属性,并在设置组时刷新datacontext
public partial class UcMyControl : UserControl
{
public UcMyControl()
{
InitializeComponent();
}
public void SetDataContext()
{
if (Group == "Group1")
this.DataContext = DataContextA;
else if (Group == "Group2")
this.DataContext = DataContextB;
else
this.DataContext = ...;
}
private string _group;
public string Group
{
get
{
return _group;
}
set
{
_group = value;
SetDataContext();
}
}
...
}