我有一个带有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的实现是否正确。
答案 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>