2012-02-22 84 views
0

我有一個ItemsControl與ItemTemplateSelector和一些模板我需要創建一個ViewModel(我可以使用ViewModelLocator如果需要)與參數。我該怎麼做 ?唯一的方法是使用轉換器嗎?模板選擇器和ViewModel的創建

<DataTemplate x:Key="DataGridTemplate"> 
     <Control:MyView DataContext="???CreateViewModelWithParameter" /> 
    </DataTemplate> 

回答

0

使用ObjectDataProvider,然後綁定數據上下文。

爲了清楚起見,下面的示例是爲按鈕做的。爲您的按鈕控制做同樣的事情。你最終會得到一個窗口和一個帶有文字「喬」的按鈕。

視圖模型:

public class MyVM 
{ 
    public string name { get; set; } 
    public MyVm(string n) { 
     name = n; 
    } 
} 

查看:

<Window 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    xmlns:clr="clr-namespace:System;assembly=mscorlib" 
    xmlns:so="clr-namespace:SO" 
    Width="300" Height="200" 
    x:Class="SO.MainWindow" 
    Title="SO Sample" 
    > 
    <Window.Resources> 
     <ObjectDataProvider x:Key="datasrc" ObjectType="{x:Type so:MyVm}"> 
      <ObjectDataProvider.ConstructorParameters> 
       <clr:String>Joe</clr:String> 
      </ObjectDataProvider.ConstructorParameters>    
     </ObjectDataProvider> 
    </Window.Resources> 
    <Button DataContext="{Binding Source={StaticResource ResourceKey=datasrc}}" Content="{Binding Path=name}" /> 
</Window>