列表框ItemTemplateSelector不起作用

时间:2014-04-15 06:25:59

标签: c# wpf

我有一个带有ItemTemplateSelector的ListBox。 我的TemplateSelector正在选择正确的模板,但没有在UI上显示任何内容。

如果我使用ItemsControl执行相同的过程,那么事情就完全正常了。但是,因为我想要selctedItem属性,我想使用ListBox。

我的XAML代码: -

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

请在我的代码中建议ItemTemplateSelector的实现是否正确。

1 个答案:

答案 0 :(得分: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>