블렌드 트리거를 사용하여 예를 들어 스타일을 변경하려면 xaml 만 사용할 수 있습니까? 예를 들어 이벤트 을 실행 한 후 RadioButton
변경 등록 정보 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, 아마도 좋은 생각입니다. 만약 내가 하나의 스타일을 사용해야하고 그 안에 내가 버튼의 속성을 확인 레이블의 가시성을 바인딩해야합니다. 하지만 어떻게 바인딩 바인딩 값 = {바인딩 ...} 컨트롤 속성 스타일로? – A191919
흠 .. 그건 까다 롭습니다. 내 대답을 참조하십시오. – sthotakura