MVVM中的样式化按钮
我正在使用MVVM模式编写一个小型WPF应用程序 我在主窗口中为按钮设置了一些样式资源,我希望它们应用于视图中的按钮。问题是有些按钮有一种触发器样式。所以我想从通用样式继承这个样式 这是我的主窗口代码:MVVM中的样式化按钮,mvvm,styles,basedon,Mvvm,Styles,Basedon,我正在使用MVVM模式编写一个小型WPF应用程序 我在主窗口中为按钮设置了一些样式资源,我希望它们应用于视图中的按钮。问题是有些按钮有一种触发器样式。所以我想从通用样式继承这个样式 这是我的主窗口代码: <Window.Resources> <DataTemplate DataType="{x:Type vm:HomeViewModel}"> <views:HomeView/> </DataTemplate>
<Window.Resources>
<DataTemplate DataType="{x:Type vm:HomeViewModel}">
<views:HomeView/>
</DataTemplate>
<DataTemplate DataType="{x:Type vm:DetailReportViewModel}">
<views:DetailReportView/>
</DataTemplate>
<DataTemplate DataType="{x:Type vm:TransferViewModel}">
<views:TransferView/>
</DataTemplate>
<Style TargetType="{x:Type Button}">
<Setter Property="Margin" Value="5"/>
<Setter Property="MinWidth" Value="30"/>
<Setter Property="Foreground" Value="Red"/>
</Style>
<Style TargetType="{x:Type ComboBox}">
<Setter Property="Margin" Value="5"/>
</Style>
</Window.Resources>
这是我的视图/用户控件中的按钮XAML
<Button Content="Delete" Command="{Binding DeleteReportCommand}">
<Button.Style>
<Style TargetType="{x:Type Button}">
<Style.Triggers>
<DataTrigger Binding="{Binding Mode}">
<DataTrigger.Value>
<vm:Mode>Add</vm:Mode>
</DataTrigger.Value>
<Setter Property="Visibility" Value="Collapsed"/>
</DataTrigger>
<DataTrigger Binding="{Binding Mode}">
<DataTrigger.Value>
<vm:Mode>Edit</vm:Mode>
</DataTrigger.Value>
<Setter Property="Visibility" Value="Visible"/>
</DataTrigger>
</Style.Triggers>
</Style>
</Button.Style>
</Button>
添加
编辑
我尝试使用BasedOn=“{StaticResource{x:Type Button}进行继承,但似乎不起作用(请参见img)
我尝试使用密钥名,但静态资源找不到密钥名,因为它不在同一视图中。BasedOn不接受动态资源。
我遗漏了什么
谢谢您可以将所有自定义样式放在单独的资源字典文件中,并将其添加到usercontrol.resources中 请参阅: 或者您可以将所有这些都放在app.xaml(Application.Resources)中
参考此内容:谢谢。我将所有内容都放在app.xaml中。我不知道为什么我之前没有尝试此操作。我在面板的资源中定义了button的stile,并且有相同的问题,但我不想将样式移动到app.xaml。如果能知道上述方法失败的原因,那就太好了。