xamlのみを使用してブレンドトリガによるスタイルのプロパティを変更することは可能ですか?たとえば、最初にRadioButton
に変更イベントChecked
を発した後に、スタイルVisibility
をFirstStyle
に、Visible
に変更します。WPFブレンドを使用してスタイルを変更する
<Window x:Class="switch_style.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:Interactivity="clr-namespace:System.Windows.Interactivity;assembly=System.Windows.Interactivity"
xmlns:Interactions="clr-namespace:Microsoft.Expression.Interactivity.Core;assembly=Microsoft.Expression.Interactions"
Title="MainWindow" Height="350" Width="525">
<Window.Resources>
<Style x:Key="FirstStyle" TargetType="Label" x:Name="block">
<Setter Property="Visibility" Value="Collapsed"/>
</Style>
</Window.Resources>
<Grid>
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="auto"></RowDefinition>
<RowDefinition Height="auto"></RowDefinition>
<RowDefinition Height="auto"></RowDefinition>
</Grid.RowDefinitions>
<StackPanel Orientation="Horizontal">
<Label Style="{DynamicResource FirstStyle}">First</Label>
<Label>Second</Label>
<Label>Third</Label>
</StackPanel>
<StackPanel Grid.Row="2" Orientation="Vertical">
<RadioButton Width="60" HorizontalAlignment="Left" Content="First">
<Interactivity:Interaction.Triggers>
<Interactivity:EventTrigger EventName="Checked">
<Interactions:ChangePropertyAction TargetName="{Binding block}" PropertyName="Visibility" Value="Visible"/>
</Interactivity:EventTrigger>
</Interactivity:Interaction.Triggers>
</RadioButton>
<RadioButton Width="60" HorizontalAlignment="Left">Second</RadioButton>
<RadioButton Width="60" HorizontalAlignment="Left">Third</RadioButton>
</StackPanel>
</Grid>
</Grid>
</Window>
RadioButtonがチェックされているかどうかによって、ラベルを表示/非表示にする場合は、Labelの可視性をRadioButtonのIsCheckedプロパティに直接バインドしないでください。 – sthotakura
@sthotakura、多分それはいい考えです。私は1つのスタイルを使用する必要があり、それらの場合、ボタンのプロパティをチェックするためにラベルの可視性をバインドする必要があります。しかし、どのようにValue = {Binding ...}をスタイルでコントロールプロパティにバインドするのですか? – A191919
うーん..それはトリッキーです。私の答えを見てください。 – sthotakura