[英]Wpf style applying in designer but not applying at runtime
I have three xaml files. 我有三个xaml文件。
Button.xaml: Button.xaml:
<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<ControlTemplate x:Key="ButtonControlTemplate" TargetType="Button">
<Border Name="Back" >
<Border.Background>
<ImageBrush ImageSource="..\Images\ButtonBackground.png" />
</Border.Background>
<TextBlock VerticalAlignment="Center" HorizontalAlignment="Center" />
</Border>
<ControlTemplate.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<Setter TargetName="Back" Property="Effect">
<Setter.Value>
<DropShadowEffect ShadowDepth="0" Direction="0"
BlurRadius="15"Color="#D3F80A" Opacity="1"/>
</Setter.Value>
</Setter>
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
<Style TargetType="{x:Type Button}">
<Setter Property="Template" Value="{StaticResource ButtonControlTemplate}" />
</Style>
</ResourceDictionary>
Default.xaml: Default.xaml:
<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:primatives="clr-namespace:System.Windows.Controls;assembly=PresentationFramework">
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="Controls\Button.xaml"></ResourceDictionary>
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
MainWindow.xaml: MainWindow.xaml:
<Window x:Class="RemoteDesktop.GUI.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="375" Width="195" WindowStyle="None" Topmost="True" AllowsTransparency="True" Background="Transparent" WindowStartupLocation="CenterScreen" ResizeMode="NoResize"
TextOptions.TextFormattingMode="Ideal"
>
<Window.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source=".\Themes\Default\Default.xaml" />
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</Window.Resources>
<Border x:Name="border" Margin="10" CornerRadius="10,10,10,10" BorderBrush="#111111" BorderThickness="0">
<Border.Background>
<ImageBrush ImageSource=".\Resources\Background.png" Stretch="Fill" />
</Border.Background>
<Border.Effect>
<DropShadowEffect ShadowDepth="0" Direction="0" BlurRadius="15" Color="Black" Opacity="1"/>
</Border.Effect>
<Grid >
<Grid.ColumnDefinitions>
<ColumnDefinition ></ColumnDefinition>
<ColumnDefinition Width="58" ></ColumnDefinition>
<ColumnDefinition Width="10" ></ColumnDefinition>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="33" />
<RowDefinition Height="15"/>
<RowDefinition Height="33" />
<RowDefinition Height="15"/>
<RowDefinition Height="33"/>
<RowDefinition Height="23"/>
<RowDefinition Height="33"/>
</Grid.RowDefinitions>
<Border Background="Transparent" Name="titleBorder" Grid.Row="0" Grid.Column="0" Grid.ColumnSpan="3" MouseLeftButtonDown="titleBorder_MouseLeftButtonDown">
<Label Foreground="LightGray" TextOptions.TextHintingMode="Animated" FontSize="14" VerticalAlignment="Center" HorizontalAlignment="Center" >Please Log In</Label>
</Border>
<TextBox Grid.Row="2" Grid.Column="0" Width="148" Height="32" Grid.ColumnSpan="3" >
Email
</TextBox>
<TextBox Grid.Row="4" Grid.Column="0" Width="148" Height="32" Grid.ColumnSpan="3" >
Password
</TextBox>
<Button Name="btn" Grid.Row="6" Grid.Column="1" BorderThickness="0" Foreground="#232323" Content="Sign In" TextOptions.TextHintingMode="Animated" BorderBrush="{x:Null}" >
<!--<Button.Style>
<Style TargetType="Button">
<Setter Property="OverridesDefaultStyle" Value="True"/>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type Button}">
<Border Name="Back" >
<Border.Background>
<ImageBrush ImageSource=".\Resources\ButtonBackground.png" />
</Border.Background>
<TextBlock VerticalAlignment="Center" HorizontalAlignment="Center" Text="{Binding Content, RelativeSource={RelativeSource TemplatedParent}}" ></TextBlock>
</Border>
<ControlTemplate.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<Setter TargetName="Back" Property="Effect">
<Setter.Value>
<DropShadowEffect ShadowDepth="0" Direction="0" BlurRadius="15" Color="#D3F80A" Opacity="1"/>
</Setter.Value>
</Setter>
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</Button.Style>-->
</Button>
</Grid>
</Border>
</Window>
Here in above window button style is applied at design time but runtime it resets to default state. 上面的窗口按钮样式在设计时应用,但在运行时它将重置为默认状态。
as i see you have 如我所见
rootdirectory\\controls\\button.xaml 根目录\\ controls \\ button.xaml
rootdirectory\\themes\\default\\default.xaml 根目录\\主题\\默认\\ default.xaml
rootdirectory\\mainwindow.xaml 根目录\\ mainwindow.xaml
so here is thing 所以这是东西
in default.xaml you have to go to directories behind to access the your button control like this 在default.xaml中,您必须转到后面的目录才能像这样访问按钮控件
<ResourceDictionary Source="..\..\Controls\Button.xaml"></ResourceDictionary>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.