我有以下樣式:設置WPF按鈕式編程方式
<Window.Resources>
<Style x:Key="RoundCorner" TargetType="{x:Type Button}">
<Setter Property="HorizontalContentAlignment" Value="Center"/>
<Setter Property="VerticalContentAlignment" Value="Center"/>
<Setter Property="Padding" Value="1"/>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type Button}">
<Border CornerRadius="0,0,4,4" BorderBrush="black"
BorderThickness="1,0,1,1" >
<ContentPresenter HorizontalAlignment="Center"
VerticalAlignment="Center"
Margin="1"></ContentPresenter>
</Border>
</ControlTemplate>
</Setter.Value>
</Setter>
<Setter Property="LayoutTransform">
<Setter.Value>
<RotateTransform CenterX="0.5" CenterY="0.5" Angle="270" />
</Setter.Value>
</Setter>
</Style>
</Window.Resources>
我將它設置爲一個按鈕,這樣
<Button x:Name="btn_bfx" ToolTip="BreakFix" Content="BFX" Click="btn_bfx_Click" Height="30" Width="40" HorizontalContentAlignment="Center" ></Button>
在構造函數中,我設置樣式,如:
btn_bfx.Style = this.Resources["RoundCorner"] as Style;
以後根據一些條件我想改變風格。
的代碼如下:
Style oldStyle = FindResource("RoundCorner") as Style;
Style newStyle = new Style();
newStyle.BasedOn = oldStyle;
newStyle.TargetType = typeof(Button);
foreach (var setter in oldStyle.Setters.ToList())
{
newStyle.Setters.Add(setter);
}
newStyle.Setters.Add(new Setter(BackgroundProperty, Brushes.CadetBlue));
btn_bfx.Style = newStyle;
的newStyle只是添加背景顏色的舊式。但是這種新風格沒有被應用。我仍然沒有背景顏色的風格。
有人能幫我解決這個問題嗎?
不是一個問題,但是如果你在XAML中定義了新的樣式,那麼編寫和讀取比在代碼後面更容易。 – kennyzx
我試着先在XAML中定義樣式,然後像樣式一樣設置像這樣的btn_bfx.Style = FindResource(「RoundCornerBackground」);它也沒有工作。 –
這可以在使用數據觸發器的樣式中沒有代碼的情況下完成。如果將數據觸發器綁定到表示條件變化的屬性,則使用觸發器中的設置器進行更改。 – kenjara