(首先:我有一定的编程经验,但是是XAML / WPF / StackOverflow的初学者。因此,请原谅任何“愚蠢”的内容,并询问是否有任何不清楚的内容,或者您需要其他信息。)
介绍:我有一个基类Item
的一些性质(如Title
,Notes
等)。从我有一些派生类等ContactItem
,MediaItem
等与作为基类进一步专门项目类型的附加的特性(例如ImageItem
,MusicItem
和VideoItem
其中衍生自MediaItem
;Person
和Institution
衍生自ContactItem
)。
在WPF中,我需要一个可以同时显示多种项目类型的页面。我目前ItemsPanel
为此使用,并开始为每种商品类型指定数据模板-数量很多(超过50种)。
问题:我现在想要的是项目控件的某种“继承性”(例如,使用a作为“基础” UserControl
,ContentPresenter
并为派生类/控件模板的其他属性添加其他控件)。
在WPF / XAML中处理此问题而不必从基类中复制/粘贴数据模板中派生项类型的控件的最佳方法是什么?
朝着正确方向的任何想法或暗示都会很棒。如果您需要一些代码或其他信息,请告诉我。
您可以简单地将每个基类嵌套UserControl
在更多派生的UserControl
s中,但是您可能发现这可能很快变得难以管理。另一种方法是使用ContentControl
元素来显示DataTemplate
s中来自其他DataTemplate
s的较大部分,如下所示:
<DataTemplate x:Key="NameTemplate" DataType="{x:Type ViewModels:UserViewModel}">
<TextBlock Text="{Binding Name}" />
</DataTemplate>
...
<DataTemplate DataType="{x:Type ViewModels:UserDerivedViewModel}">
<ContentControl Content="{Binding}"
ContentTemplate="{StaticResource NameTemplate}" />
<TextBlock Text="{Binding Age}" />
</DataTemplate>
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句