我正在尝试实现特定于应用程序的自定义视图,但没有任何运气。这是我的问题:我需要一个自定义视图,因为我希望用户能够在运行时动态切换视图。我需要一个自定义视图(而不是只有数据模板),因为列表视图布局必须更改以及控制模板和数据模板。所有的教程都说要实现从视图库派生的自定义类并覆盖 DefaultStyleKey 和 ItemContainerDefaultStyleKey 以返回 generic.xaml 中定义的 ComponentResourceKey。但是,问题是我正在尝试创建几个非常特定于该应用程序的视图。某些画笔和字体将在整个应用程序中保持一致自定义视图将使用这些。即我有应用程序级别的 Forebrush、Shadowbrush、Deepshadowbrush、TextDecorator 等,我希望视图使用这些。如果视图将在外部 generic.xaml 中定义,那么绑定到这些将是非常复杂的标记。此外,无论如何,它都会使它们成为特定应用程序(如果它们绑定到这些画笔)。任何人都知道如何在应用程序内部定义可以在运行时更改的视图样式?
问问题
1086 次
1 回答
0
我对您的详细信息有些困惑,但是您可以在运行时设置 ListView 的样式……其中 CustomStyle 是您要应用于 ListView 的预定义样式。
ListView view = new ListView();
view.Style = CustomStyle;
DefaultStyleKey 适用于自定义控件(这与 UserControl 不同)。所以假设你想要一个名为 Widget 的新控件。您不需要为该 Widget 定义 DefaultStyleKey,因为它没有定义默认样式。UserControl 是控件的集合,因此它没有预定义的样式。
此外,您可以创建一个ResourceDictionary
来分解您的样式。然后,您可以通过 App.xaml 合并它们......
<Application.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="Themes/Generic.xaml"/>
<ResourceDictionary Source="Themes/ListViewStyles.xaml"/>
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</Application.Resources>
于 2010-10-12T15:17:00.703 回答