我是WPF的新手。我有一个重写MaterialDesignComboBoxToggleButton样式的问题。我想用自己的替换“模板”设置器,但是我的控件模板内容总是被忽略。为什么会发生这种情况?使用其他样式我没有这个问题。
贝娄代码演示了我所需要的。
覆盖.xaml
<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="pack://application:,,,/MaterialDesignThemes.Wpf;component/Themes/MaterialDesignTheme.ComboBox.xaml" />
</ResourceDictionary.MergedDictionaries>
<Style BasedOn="{StaticResource MaterialDesignComboBoxToggleButton}" TargetType="{x:Type ToggleButton}">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type ToggleButton}">
<TextBlock FontSize="50" FontWeight="Bold">$$</TextBlock>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
应用程序xaml
<Application x:Class="Wpf.App"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="clr-Wpf" xmlns:materialDesign="http://materialdesigninxaml.net/winfx/xaml/themes"
StartupUri="Views/MainWindow.xaml">
<Application.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<materialDesign:CustomColorTheme BaseTheme="Light" PrimaryColor="#FFD8E1FF" SecondaryColor="#FFD8E1FF" />
<ResourceDictionary Source="pack://application:,,,/MaterialDesignThemes.Wpf;component/Themes/MaterialDesignTheme.Defaults.xaml" />
<ResourceDictionary Source="/Overrides.xaml" />
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</Application.Resources>
2条答案
按热度按时间vdgimpew1#
将相同的资源键添加到自定义样式中,如下所示:
并且您不需要在
Overrides.xaml
文件中添加这样的资源:因为MDIX资源已包含在
MaterialDesignTheme.Defaults.xaml
中,您已将其添加到App.xaml
文件中。gg0vcinb2#
在我的例子中,窗口中的覆盖样式不起作用,但当我尝试在App.xml中使用时,它起作用了。我将切换按钮的样式更改为另一个样式。代码为: