Mar*_*eIV 8 wpf datatemplate contentpresenter contentcontrol datatemplateselector
我们写的是一个非常专业的ItemsControl,实际上ContentPresenter每个'行' 有三个,每个都绑定到一个不同的对象(想想穷人的网格)而不是更常见的一个,比如a ListBox.
现在有一个ListBox如果你没有明确指定一个ItemTemplate或一个ItemTemplateSelector,似乎有一些内部选择器纯粹基于数据类型应用模板.但是,我们ContentPresenter不会接受它们.我们也尝试过将它们ContentControl改为,但这也没有用.
现在我知道我可以简单地写我自己DataTypeTemplateSelector做这个工作,但如果该功能已经"出炉中的"我不知道什么地方认为它有这么多使用ItemsControl的(ListBox,TreeView,ComboBox',DataGrid等),并根据这个MSDN文章...
http://msdn.microsoft.com/en-us/library/ms742521.aspx
......它应该默认工作!但同样,它没有.
这是我们的(伪)代码......
<UserControl.Resources>
<!-- These all work when the relevant items are in a ListBox,
but not with stand-alone ContentPresenters or ContentControls -->
<DataTemplate DataType="local:SomeTypeA">
<TextBlock Text="{Binding Converter={c:DataTypeNameConverter}}" Foreground="Blue" />
</DataTemplate>
<DataTemplate DataType="local::SomeTypeB">
<TextBlock Text="{Binding Converter={c:DataTypeNameConverter}}" Foreground="Purple" />
</DataTemplate>
<DataTemplate DataType="local::SomeTypeC">
<TextBlock Text="{Binding Converter={c:DataTypeNameConverter}}" Foreground="Purple" />
</DataTemplate>
</UserControl.Resources>
<!-- These don't pick up the templates -->
<ContentControl Content="{Binding Field1}" />
<ContentPresenter Content="{Binding Field2}" />
<!-- This however does -->
<ListBox ItemsSource="{Binding AllItems}"
Run Code Online (Sandbox Code Playgroud)
那么......任何人都想为什么不刺?