Ленивая привязка WPF - PullRequest
4 голосов
/ 25 июня 2011

У меня есть Expander из WPF (и с использованием Entity Framework 4 и шаблона MVVM), который содержит ContentControl, привязанный к некоторому внутреннему ViewModel.Все, что я хочу - привязать этот элемент управления контентом LAZILY .То есть я хочу, чтобы мой ViewModel был «получен», когда Expander открыт.

Как это сделать?Как сделать сложные окна с внутренним ViewModels быстрее?

Ответы [ 2 ]

4 голосов
/ 25 июня 2011

Вы можете добавить свойство IsExpanded к вашей ViewModel, привязать к нему расширитель и учесть значение этого свойства при возврате содержимого ContentControl:

private bool _isExpanded;
public bool IsExpanded
{
    get { return _isExpanded; }
    set
    {
        _isExpanded = value;
        OnPropertyChange("IsExpanded");
        OnPropertyChange("Content");
    }
}

public SomeType Content
{
    get
    {
        if (!_isExpanded)
            return null;
        return LoadContent();
    }
}
0 голосов
/ 28 мая 2013

Другой вариант, похожий на описанный выше, может заключаться в создании ObservableCollection, но заполнять его только при первом открытии расширителя.

...