我正在尝试使用ResourceDictionary为按钮设置样式
<Window.Resources>
<vieModel:MainWindowViewModel x:Key="MainViewModel"/>
<ResourceDictionary x:Key="ButtonStyle"> //If I don't use key it gives error
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="GlassButton.xaml"/>
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</Window.Resources>
并将其用作
<Button Style="{DynamicResource ButtonStyle}"/>
现在,当我这样做时,它抱怨ResourceDictionary无法应用于Style。当我使用GlassButton.xaml中定义的“ GlassButton”时,它说GlassButton无法解析。
当我像
一样使用它时<Button Style="{StaticResource ButtonStyle}"/>
或者在两种情况下都使用GlassButton抱怨或不起作用。
GlassButton.xaml看起来像这样,并且可以很好地编译
<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="clr-namespace:Citations">
<Style x:Key="GlassButton" TargetType="{x:Type Button}">
<Setter Property="FontSize" Value="42" />
<Setter Property="Foreground" Value="White" />
<Setter Property="Template">
我以here或here的示例为例,两者都是使用ResourceDictionary的相同方法。我正在按照所示做,但仍然无法正常工作。我需要转换器吗?还是我做错了什么?
答案 0 :(得分:0)
以下内容对我有用。检查GlassButton.xaml的路径是否正确。如果将其放在“样式”之类的文件夹中,则需要使用Source="Styles/GlassButton.xaml"
。
<Window.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="GlassButton.xaml"/>
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</Window.Resources>
<Grid>
<Button Style="{DynamicResource GlassButton}"
Content="Button Content"/>
</Grid>
答案 1 :(得分:0)
我应该按如下方式使用它
<Window.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="GlassButton.xaml"/>
</ResourceDictionary.MergedDictionaries>
<vieModel:MainWindowViewModel x:Key="MainViewModel"/>
</ResourceDictionary>
</Window.Resources>
这有效