2016-03-28 22 views
-1

こんにちは私はボタンのOnclickイベントの背景色をランタイムに変更したいと思います。WPFのボタンの背景色を設定するには

<Button FontStyle="Normal" FontWeight="Normal" HorizontalAlignment="Right" Margin="0,0,30,535" Name="b9" Width="96" Height="95" VerticalAlignment="Bottom" Content="9" FontFamily="Verdana" Click="Button_Click" Visibility="Visible"> 
<Button.Template> 
<ControlTemplate> 
<Rectangle Name="myRectangle" RadiusX="46.5" RadiusY="46.5" Stroke="LightYellow" StrokeThickness="3"> 
<Rectangle.Fill> 
<VisualBrush Opacity="0.7"> 
<VisualBrush.Visual> 
<TextBlock Background="Green" Foreground="LightYellow" Name="myTextBlock" Padding="10">Change Color</TextBlock> 
</VisualBrush.Visual> 
</VisualBrush> 
</Rectangle.Fill> 
</Rectangle> 
<ControlTemplate.Triggers> 
<Trigger Property="ButtonBase.IsPressed" Value="True"> 
<Setter Property="Shape.Stroke" TargetName="myRectangle" Value="LightGreen" /> 
<Setter Property="TextBlock.Background" TargetName="myTextBlock"> 
<Setter.Value> 
<LinearGradientBrush> 
<GradientStop Color="DarkGreen" Offset="1" /> 
<GradientStop Color="Green" Offset="0.5" /> 
<GradientStop Color="DarkGreen" Offset="0" /> 
</LinearGradientBrush> 
</Setter.Value> 
</Setter> 
</Trigger> 
</ControlTemplate.Triggers> 
</ControlTemplate> 
</Button.Template> 
</Button> 

バックグラウンドのプロパティを取得してランタイムに設定する方法

答えて

1
var textBlock = (TextBlock)b9.Template.FindName("myTextBlock", b9); 
textBlock.Background = Brushes.Blue; 
3

ボタンのClickイベントを処理できます。

<Button Content="test" Click="Button_Click_3"> 

    </Button> 
ここ

が論理:

ます。private void Button_Click_3(オブジェクト送信者、あなたがそれをクリックすると、次のコードは、赤とデフォルトの一方との間にその背景色を切り替えますRoutedEventArgs e)に

{ 
     Button btn = sender as Button; 
     btn.Background = btn.Background == Brushes.Red ? (SolidColorBrush)(new BrushConverter().ConvertFrom("#FFDDDDDD")) : Brushes.Red; 
    } 

それとも、スタイルでそれを行う場合は、あなたはEventSetter使用する必要があります。

 <Button.Style> 
      <Style TargetType="Button"> 
       <EventSetter Event="Click" Handler="Button_Click_3"/> 
      </Style> 
     </Button.Style> 
    </Button> 
関連する問題