首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Itemsource的条件静态资源

Itemsource的条件静态资源
EN

Stack Overflow用户
提问于 2016-02-06 05:25:20
回答 1查看 433关注 0票数 0

目前,为了修复来自telerik的错误,我的ItemsSource必须指向我当前正在使用的视图模型。

Relationship.xaml

代码语言:javascript
复制
<UserControl.Resources>
     <Client:PersonViewModel x:Key="MyViewModel"/>
</UserControl.Resources>

它被用在哪里。

代码语言:javascript
复制
 <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是一个枚举。

代码语言:javascript
复制
public void StaticResourcToUse(ViewModelTypes viewModelType)
{
    if (viewModelType == ViewModelTypes.PersonViewModel)
        use personviewmodel resources
    if (viewModelType == ViewModelTypes.BusinessViewModel)
        use businessViewModel resources
}
EN

回答 1

Stack Overflow用户

发布于 2016-02-06 05:56:34

如果我没理解错的话,你想要的是根据视图模型切换视图。

使用ContentControl显示数据,并根据更改的属性换出触发器中的ContentTemplate

基于绑定属性交换模板的Here's an example in Rachel Lim's blog

代码语言:javascript
复制
<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>
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35233795

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档