次のような単純なラジオ ボタン スタイルを作成しました。
<Style TargetType="RadioButton" >
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="ToggleButton">
<Border x:Name="BORDER_PART" BorderBrush="Gray" CornerRadius="5,5,0,0" BorderThickness="0.5" >
<TextBlock x:Name="LABEL_PART" HorizontalAlignment="Center" FontFamily="Calibri" FontSize="14" VerticalAlignment="Center" Text="{TemplateBinding Content}" />
</Border>
<ControlTemplate.Triggers>
<Trigger Property="IsChecked" Value="True">
<Setter TargetName="BORDER_PART" Property="Background" Value="White"/>
<Setter TargetName="BORDER_PART" Property="BorderThickness" Value="0.5 0.5 0.5 0"/>
<Setter TargetName="LABEL_PART" Property="FontWeight" Value="Bold"/>
</Trigger>
<Trigger Property="IsMouseOver" Value="True">
<Setter TargetName="LABEL_PART" Property="FontWeight" Value="Bold"/>
<Setter TargetName="BORDER_PART" Property="BorderBrush" Value="Black"/>
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
次に、次のようなグリッドに適用します。
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition/>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="Auto"/>
</Grid.ColumnDefinitions>
<RadioButton Grid.Column="0" GroupName="TabNavigator" IsChecked="True" Content="Home" />
<RadioButton Grid.Column="1" GroupName="TabNavigator" Content="Dashboard"/>
<TextBlock x:Name="moveAroundTextBlock" Text="some text" Grid.Column="2" HorizontalAlignment="Center" VerticalAlignment="Bottom" Margin="0 0 0 5"/>
<Button Content="Help" Grid.Column="3" />
<Button Content="Close" Grid.Column="4" />
</Grid>
スタイルでわかるように、ラジオボタンをマウスでホバーすると、テキストが太字になり、それで問題ありませんが、上記のようにグリッドに適用すると、ラジオボタンが切り替わるたびに「moveAroundTextBlock」が移動したように見えますラジオボタンが残っている列が自動としてマークされているため、太字と標準の間 (ただし、他の言語へのローカライズの可能性があるため、テキストが途切れないようにする必要があります)
問題は次のとおりです:
「moveAroundTextBlock」を次の制限でその位置に静止させるにはどうすればよいです
か
?
(つまり、自動サイズの列を維持しながら、コンテンツが太字の場合に、raidobuttons の列を広くしないようにする方法)