目前,为了修复来自telerik的错误,我的ItemsSource必须指向我当前正在使用的视图模型。
Relationship.xaml
<UserControl.Resources>
<Client:PersonViewModel x:Key="MyViewModel"/>
</UserControl.Resources>它被用在哪里。
<Telerik:GridViewComboBoxColumn Header="Relationship"
ItemsSource="{Binding GridRelationshipTypes, Mode=TwoWay, Source={StaticResource MyViewModel}}"
DataMemberBinding="{Binding RelationshipType}"
SelectedValueMemberPath="Id"
DisplayMemberPath="Name"
IsReadOnly="False"/>我还有另外四个需要应用此逻辑的视图模型。我不想为这么小的东西创建5个不同的UserControls。我想知道我是否可以创建一个方法,这样它就可以检查当前的viewmodel类型并使用相应的viewmodel。
PseudoCode - ViewModelTypes是一个枚举。
public void StaticResourcToUse(ViewModelTypes viewModelType)
{
if (viewModelType == ViewModelTypes.PersonViewModel)
use personviewmodel resources
if (viewModelType == ViewModelTypes.BusinessViewModel)
use businessViewModel resources
}发布于 2016-02-06 05:56:34
如果我没理解错的话,你想要的是根据视图模型切换视图。
使用ContentControl显示数据,并根据更改的属性换出触发器中的ContentTemplate。
基于绑定属性交换模板的Here's an example in Rachel Lim's blog:
<DataTemplate x:Key="CarTemplate" TargetType="{x:Type local:YourViewModel}">
<TextBlock Text="I'm a Car" />
</DataTemplate>
<DataTemplate x:Key="TrackTemplate" TargetType="{x:Type local:YourViewModel}">
<TextBlock Text="I'm a Track" />
</DataTemplate>
<DataTemplate DataType="{x:Type local:YourViewModel}">
<ContentControl Content="{Binding }">
<ContentControl.Style>
<Style TargetType="{x:Type ContentControl}">
<Setter Property="ContentTemplate" Value="{StaticResource CarTemplate}" />
<Style.Triggers>
<DataTrigger Binding="{Binding YourType}" Value="Track">
<Setter Property="ContentTemplate" Value="{StaticResource TrackTemplate}" />
</DataTrigger>
</Style.Triggers>
</Style>
</ContentControl.Style>
</ContentControl>
</DataTemplate>https://stackoverflow.com/questions/35233795
复制相似问题