2014-04-15 28 views
0

我有一个ListBox和ItemTemplateSelector。 我的TemplateSelector选择了正确的模板,但没有在UI上显示任何内容。列表框ItemTemplateSelector不工作

如果我用ItemsControl做同样的过程,事情是完美的。但是,因为我想selctedItem属性我想使用列表框。

我的XAML代码: -

<ListBox x:Name="CanvasItemsControl" ItemTemplateSelector="{StaticResource templateSelector}" ItemsSource="{Binding ItemListViewModel.CanvasItems}"> 
    <ListBox.ItemsPanel> 
     <ItemsPanelTemplate> 
      <Canvas/> 
     </ItemsPanelTemplate> 
</ListBox> 

请建议如果ItemTemplateSelector的实施是不是在我的代码是正确的。

+1

“请建议如果ItemTemplateSelector的实施是不是在我的代码正确的”。它在哪里? – Clemens

回答

0

首先定义你的模板资源,然后在你的代码文件中定义DataTemplateSelector

public class templateSelector : DataTemplateSelector 
{ 
    private DataTemplate _Template1; 
    public DataTemplate Template1 
    { 
     get { return _Template1; } 
     set { _Template1 = value; } 
    } 


    private DataTemplate _Template2; 
    public DataTemplate Template2 
    { 
     get { return _Template2; } 
     set { _Template2 = value; } 
    } 


    public override DataTemplate SelectTemplate(object item, DependencyObject container) 
    { 
     YourClass obj = (YourClass)item; 

     if (obj.Type == "SomeType") 
     { 
      return Template1; 
     } 
     else 
     { 
      return Template2; 
     } 
    } 

} 

<ListView.ItemTemplateSelector> 
    <local:FieldRangeTemplateSelector 
     Template1="{StaticResource YouyTemplate1}" 
     Template2="{StaticResource YoutTemplate2}" /> 
</ListView.ItemTemplateSelector>