2014-10-03 63 views
0

我想绑定到我的GridView的DataContext上的属性,并使用DataTemplateSelector将正确的模板分配给单元格,但我似乎无法找到正确的方式来执行此操作。绑定到DisplayMemberBinding将覆盖模板选择器,但将CellTemplateSelector属性设置为绑定到DataContext,而不是要为其选择模板的属性。如何在GridView上使用带有数据绑定的CellTemplateSelector?

这个答案似乎恰好描述了我在找什么,但是我在查找关于如何实现它描述的信息时遇到了问题:https://stackoverflow.com/a/12519433/1756960

这是我尝试使用不工作(简化发帖):

<ListView ItemsSource="{Binding Items}"> 
     <ListView.View> 
      <GridView> 
       <GridViewColumn Header="Name" 
           DisplayMemberBinding="{Binding Name}" 
           CellTemplateSelector="{StaticResource ContentTypeTemplateSelector}" /> 
       <GridViewColumn Header="Data" 
           DisplayMemberBinding="{Binding}" 
           CellTemplateSelector="{StaticResource ContentTypeTemplateSelector}" /> 
      </GridView> 
     </ListView.View> 
    </ListView> 

回答

0

我建议做的第一件事是区分您的内容模板选择两种方式中的一种。首先是简单地有多个模板选择器类。第二个是有两个实例,其模板分配不同的绑定。

<Resources> 
    <ns:TemplateSelector x:Key="NameTemplateSelector"> 
     <ns:TemplateSelector.Template1> 
      <DataTemplate> 
       <!-- Something bound to Name --> 
      </DataTemplate> 
     </ns:TemplateSelector.Template1> 
    </ns:TemplateSelector> 

    <ns:TemplateSelector x:Key="DataTemplateSelector"> 
     <ns:TemplateSelector.Template1> 
      <DataTemplate> 
       <!-- Something bound to Data --> 
      </DataTemplate> 
     </ns:TemplateSelector.Template1> 
    </ns:TemplateSelector> 

到附加属性参考(见MSDN)将让你做一个属性,它连接到模板选择,然后从TemplateSelector的代码访问这些数据。

相关问题