Как выбрать другой DataContext для UserControl в зависимости от свойства? - PullRequest
2 голосов
/ 24 августа 2010

Я хочу выбрать другой DataContext для UserControl, в зависимости от того, какой пользователь указал в xaml, предположим, у меня есть пользовательский элемент управления:

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" />

Но проблема в том, что Group всегда равна нулю в ctor, поэтому она не будет работать ... Мне нужно проверить заданное пользователем значение (в данном случае Group), прежде чем установить DataContext для UcMyControl. Есть ли способ обойти это?

1 Ответ

1 голос
/ 24 августа 2010

Реализуйте свойство с реализацией и обновите текст данных, когда группа установлена ​​

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

    ...
}
...