我想爲我的WPF應用程序中的按鈕創建自定義樣式。當鼠標懸停在它們上面時,我希望能夠更改它們的Backgroound
和BorderThickness
屬性。以編程方式WPF更改按鈕懸停樣式
一些按鈕是在c#中動態創建的,所以我不認爲xaml解決方案就足夠了。
我試過在c#中使用觸發器和安裝程序來實現我的目標,但是我無法使它工作,懸停顏色始終保持淺藍色。
這裏是我是如何創建一個按鈕:
Button but = new Button()
{
Height = 40,
Background = new SolidColorBrush(Colors.Gray),
Content = new Label() {
FontSize = 13,
FontWeight = FontWeights.Medium,
Foreground = new SolidColorBrush(Colors.White)
}
}
stackPanel.Children.Add(but)
我知道這是不是創建控件的最佳途徑,我可能會更好使用MVVM,但我不能改變整個應用程序所以我只是在尋找ac#解決方案。
謝謝!
編輯:
我添加了一個風格App.xaml文件。它看起來像這樣(UpperMenuModeButton是基於常規按鈕我的控制):
<Application.Resources>
<Style TargetType="UpperMenuModeButton" x:Key="UpperMenuModeButton" >
<Style.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<Setter Property="Background" Value="Red"/>
</Trigger>
</Style.Triggers>
</Style>
</Application.Resources>
我設置的風格,同時創造這樣的按鈕:
this.Style = (Style) Resources["UpperMenuModeButton"];
我仍然得到規則淡藍色背景徘徊。
用鼠標懸停觸發器在xaml中創建一個通用樣式,並在您的代碼中應用[樣式](http://stackoverflow.com/questions/10686917/setting-the-style-property-of-a-wpf-label -in-code) –
@MathewJibin謝謝你的回答!你能否提供更多關於如何創建通用樣式的信息,以便我可以將它應用到不同窗口中的按鈕上? –
或者只是創建一個樣式來實現特定類型的所有元素,如按鈕 – Emad