스타일 트리거가있는 간단한 ToggleButton을 사용하여 IsChecked의 상태에 따라 단추의 이미지를 변경할 수 있습니다. 버튼 하나로 잘 작동합니다. 그러나 하나 이상의 단추를 표에 추가 할 때 ToggleButton 중 하나를 클릭하면 다른 단추의 상태가 변경됩니다. botton의 스타일을 기반으로하는 트리거 유형 대신 다른 트리거 유형을 사용해야합니까? 여기 WPF ToggleButton을 클릭하면 다른 ToggleButtons 값이 변경됩니다.
세 ToggleButtons 배치하는 XAML 블록입니다 :
<Grid Height="362" Width="259">
<Grid.RowDefinitions>
<RowDefinition/>
<RowDefinition/>
<RowDefinition/>
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition/>
</Grid.ColumnDefinitions>
<ToggleButton Style="{StaticResource TogglebuttonStyle}" IsChecked="{x:Null}" IsThreeState="True"
Width="15" Height="15" Grid.Row="0" Grid.Column="0"/>
<ToggleButton Style="{StaticResource TogglebuttonStyle}" IsChecked="{x:Null}" IsThreeState="True"
Width="15" Height="15" Grid.Row="1" Grid.Column="0"/>
<ToggleButton Style="{StaticResource TogglebuttonStyle}" IsChecked="{x:Null}" IsThreeState="True"
Width="15" Height="15" Grid.Row="2" Grid.Column="0"/>
</Grid>
을 그리고 여기 트리거와 스타일입니다 :이 부르는 것
<Style x:Key="TogglebuttonStyle" TargetType="ToggleButton">
<Style.Triggers>
<Trigger Property="IsChecked" Value="True">
<Setter Property="Content">
<Setter.Value>
<Image Source="{StaticResource ImagePlus}"/>
</Setter.Value>
</Setter>
</Trigger>
<Trigger Property="IsChecked" Value="False">
<Setter Property="Content">
<Setter.Value>
<Image Source="{StaticResource ImageMinus}"/>
</Setter.Value>
</Setter>
</Trigger>
<Trigger Property="IsChecked" Value="{x:Null}">
<Setter Property="Content">
<Setter.Value>
<Image Source="{StaticResource ImageNeutral}"/>
</Setter.Value>
</Setter>
</Trigger>
</Style.Triggers>
</Style>
각 버튼은 자체 상태를 유지합니다.
App.xaml (태그 내)에서 내 스타일 블록을 이동하고 각 버튼에 스타일 트리거를 정의하면 문제가 사라졌습니다. 이후로 나는 WPF/XAML에 대해 상당히 익숙하지 않기 때문에 실제 솔루션인지 또는 해킹 가능한 해결 방법인지 확실하지 않습니다. 이런 식으로 지정하는 것은 무리가 있습니다.
<ToggleButton IsChecked="True" IsThreeState="True"
Width="25" Height="25" Grid.Row="2" Margin="-1,19,1,-19">
<ToggleButton.Style>
<Style TargetType="ToggleButton">
<Style.Triggers>
<Trigger Property="IsChecked" Value="True">
<Setter Property="Content">
<Setter.Value>
<Image Source="{StaticResource ImagePlus}"/>
</Setter.Value>
</Setter>
</Trigger>
<Trigger Property="IsChecked" Value="False">
<Setter Property="Content">
<Setter.Value>
<Image Source="{StaticResource ImageMinus}"/>
</Setter.Value>
</Setter>
</Trigger>
<Trigger Property="IsChecked" Value="{x:Null}">
<Setter Property="Content">
<Setter.Value>
<Image Source="{StaticResource ImageNeutral}"/>
</Setter.Value>
</Setter>
</Trigger>
</Style.Triggers>
</Style>
</ToggleButton.Style>
</ToggleButton>
내가 게시 한 예제 코드를 시도했는데 예상대로 작동합니다. 각 버튼은 개별적으로 변경됩니다. –
아직 문제가 해결되지 않았지만 하나의 작은 데이터 포인트로 토글 버튼의 내용을 일반 텍스트 ("on", "off", "n/a")로 변경했습니다. 세 개의 버튼은 모두 독립적으로 작동하며 자체 상태를 유지합니다. –