如何根据属性为UserControl选择不同的DataContext?

时间:2010-08-24 04:15:44

标签: wpf wpf-controls

我想根据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)。有办法解决它吗?

1 个答案:

答案 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();
        }
    }

    ...
}