J W*_*J W 10 c# wpf default datatemplate
wpf应用程序中的默认DataTemplate显示.ToString()方法的结果.我正在开发一个默认的DataTemplate应该不显示的应用程序.
我试过了:
<Grid.Resources>
<DataTemplate DataType="{x:Type System:Object}">
<Grid></Grid>
</DataTemplate>
</Grid.Resources>
Run Code Online (Sandbox Code Playgroud)
但这不起作用.有没有人知道如果没有为应用程序中的每个类类型指定特定的DataTemplate,这是否可行?
如果您使用的是 MVVM 模式并且有一个所有 ViewModel 类都从其派生的抽象类,则可以使用该类而不是 System.Object:
<Grid.Resources>
<DataTemplate DataType="{x:Type vm:VMBase}">
</DataTemplate>
</Grid.Resources>
Run Code Online (Sandbox Code Playgroud)
我知道没有办法做到这一点。根据下面 Joe 的评论,WPF 特别不允许DataTemplate为 type指定 a Object。
根据您的确切要求,搜索DataTemplate与特定类型匹配的可能更容易。如果您找到了,请使用它。否则,不显示任何内容。例如:
<ContentControl Content="{Binding YourContent}" ContentTemplateSelector="{StaticResource MyContentTemplateSelector}"/>
Run Code Online (Sandbox Code Playgroud)
在您的选择器中(显然是伪代码):
var dataTemplateKey = new DataTemplateKey() { DataType = theType; };
var dataTemplate = yourControl.FindResource(dataTemplateKey);
if (dataTemplate != null)
{
return dataTemplate;
}
return NulloDataTemplate;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7993 次 |
| 最近记录: |