Как правильно (MVVM) справиться со следующей ситуацией? У нас есть окно / пользовательский элемент управления, который содержит несколько пользовательских элементов управления и сетки. Когда мы выбираем элемент сетки, SelectedItem="{Binding SelectedAccount, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"
обновляет свойство SelectedAccount
для пользовательских элементов управления
<TabItem Header="{x:Static p:Resources.Basic}">
<DockPanel>
<accounts:UCBasic x:Name="UCBasic" SelectedAccount="{Binding SelectedItem, ElementName=gridMain}"></accounts:UCBasic>
</DockPanel>
</TabItem>
<TabItem Header="{x:Static p:Resources.AdditionalData}">
<DockPanel>
<accounts:UCAdditionalData x:Name="UCAdditionalData" SelectedAccount="{Binding SelectedItem, ElementName=gridMain}"></accounts:UCAdditionalData >
</DockPanel>
... more user controls ...
</TabItem>
, используя их DependencyProperty
. Теперь, как бы я написал PageModel для вышеуказанных пользовательских элементов управления (UCBasic, UCAdditionalData
), чтобы они могли загружать / отображать больше данных в зависимости от SelectedAccount
из сетки. Существует грязный способ использования свойства change event, но я не думаю, что это нужно делать таким образом. Каждый пользовательский элемент управления имеет следующее:
public Account SelectedAccount
{
get { return (Account)GetValue(SelectedAccountProp); }
set
{
SetValue(SelectedAccountProp, value);
}
}
public static readonly DependencyProperty SelectedAccountProp = DependencyProperty.Register("SelectedAccount", typeof(Account), typeof(UCBasic));
По существу, как бы я уведомил этот пользовательский элемент управления о том, что значение SelectedAccount
изменилось, и он должен обновить себя (свои собственные текстовые поля, сетки и т. Д.)?