2012-01-30 65 views
1

我正在開發一個WPF項目,通常我使用resourcedictionary來組織樣式和顏色。當使用Expression Blend它會把視圖模型對象在這樣的資源:將視圖模型放入資源辭典中是否正確?

<local:VM x:Key="VM" d:IsDataSource="True"/> 

,並設置這樣

<Window.DataContext><Binding Mode="OneWay" Source="{StaticResource VM}"/></Window.DataContext> 

DataContext的,這是非常有用的使用source得到命令或財產XAML在這樣的結合(尤其是在DataTemplate中)

{Binding XXCommand,Source={StaticResource VM}} 

財產我可以把視圖模型對象ResourceDictionary中或者是最好把這個視圖特定在與viewmodel相關的每個視圖中?

而且,如果我把下面的風格在ResourceDictionary中我必須包括視圖模型對象,

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

回答

0

這可能是答案:MVVM Instantiation Approaches。很好地解釋了一些實例化方法。

+0

它是一個不錯的列表,但我強烈反對作者對他對'Option 7:DataTemplate as views'和'Option 8'的看法。這些是我將ViewModel綁定到View的最常用方法,而不是使用Option3來顯示應用程序外殼的初始啓動。 – Rachel 2012-01-30 17:59:56