我正在尝试使用DataTemplateSelector
根据组合框选择加载不同的控件集,但它似乎永远不会被调用。除了标签和网格内的更多组合框外,我的DataTemplates中没有什么花哨的东西。
这是我的TemplateSelector
public class PWRPTemplateSelector : DataTemplateSelector
{
public DataTemplate Product { get; set; }
public DataTemplate Project { get; set; }
public override DataTemplate SelectTemplate(object item, DependencyObject container)
{
if(item == null) { return base.SelectTemplate(item, container); }
return (int)item == 0 ? Product : Project;
}
}
我的xaml
<DataTemplate x:Key="Project">
.....
</DataTemplate>
<DataTemplate x:Key="Project">
.....
</DataTemplate>
<c:PWRPTemplateSelector x:Key="PWRPTemplateSelector" Product="{StaticResource Product}" Project="{StaticResource Project}"/>
<ItemsControl ItemsSource="{Binding TestSelc, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"
ItemTemplateSelector="{StaticResource PWRPTemplateSelector}" Grid.Row="1" Grid.ColumnSpan="2" />
我的ItemControl绑定到Combobox的选定属性int
。一切都得到了正确执行,除了DataTemplate永远不会被调用。所有财产都得到改变并实施INotifyPropertyChanged
。
更新:
如果我将所选项目更改为DataTemplateSelector
值,我可以获得string
。但是,该值将作为char
而不是整个字符串传递。然后为字符串中的每个字符调用该方法。