Я разрабатываю проект WPF, и обычно я использую Resourcedictionary для организации стилей и цветов. При использовании Expression Blend он поместит объект viewmodel в ресурс, подобный этому:
<local:VM x:Key="VM" d:IsDataSource="True"/>
и установите текст данных следующим образом
<Window.DataContext><Binding Mode="OneWay" Source="{StaticResource VM}"/></Window.DataContext>
Это очень полезно для получения команды или свойства в XAML, используя свойство source
в привязке, как это (особенно в datatemplate)
{Binding XXCommand,Source={StaticResource VM}}
Могу ли я поместить объект viewmodel в resourcedictionary или лучше поместить это представление отдельно для каждого представления, связанного с моделью представления?
Кроме того, если я добавлю приведенный ниже стиль в resourcedictionary, я должен включить объект viewmodel,
<Style x:Key="MenuItemStyle" TargetType="MenuItem">
<Setter Property="Header" Value="{Binding Desc}"/>
<Setter Property="Icon" Value="{StaticResource IconImage}" />
<Setter Property="Command" Value="{Binding ChangeShowCommand,Source={StaticResource VM}}"/>
<Setter Property="CommandParameter" Value="{Binding}"/>
</Style>