У меня есть следующий (сокращенный) silverlight xaml для представления / модели представления:
<UserControl x:Class=MyView>
<UserControl.Resources>
<MyViewModel x:Name="MyViewModel"/>
</UserControl.Resources>
<Grid DataContext="{Binding Source={StaticResource MyViewModel}}">
<UserControl>
Надеюсь, это вам всем знакомо.
Однако я хотел бы создать 2 экземпляраэтого же пользовательского элемента управления представлением, но для передачи параметра в модель представления, чтобы позволить мне иметь немного отличающиеся данные модели представления, основанные на свойстве, которое я передаю в модель представления.Примерно так:
<UserControl x:Class=MyView>
<UserControl.Resources>
<MyViewModel x:Name="MyViewModel" Filter="Some value set at a higher level"/>
</UserControl.Resources>
<Grid DataContext="{Binding Source={StaticResource MyViewModel}}">
<UserControl>
Проблема в том, что я не могу жестко закодировать параметр Filter внутри пользовательского элемента управления, но мне нужно установить его на более высоком уровне.Есть ли способ получить параметр фильтра сверху вниз через привязку, и как будет выглядеть синтаксис.Я надеялся что-то вроде следующего:
Либо непосредственно от родителя что-то вроде:
<MyView>
<MyView.ViewModel Filter="All">
</MyView>
<MyView>
<MyView.ViewModel Filter="Some">
</MyView>
Или из пользовательского контроля, глядя вверх, что-то вроде:
<UserControl.Resources>
<MyViewModel x:Name="MyViewModel" Filter="{Binding FilterTypeFromDataContextHigherUpTheTree}"/>
</UserControl.Resources>
но я не знаю, возможно ли напрямую обратиться к статической модели представления ресурсов от родителя, чтобы установить свойство, или как будет выглядеть синтаксис.
Я также не знаю, есть ли более простой способ сделать это, так как я подозреваю, что мой подход не очень элегантен.
Реальный вопрос в том, как передать параметр впросмотр модели со статическим ресурсом