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 次 |
最近记录: |