我有一个RadioButtons控件,它延伸到父控制器的宽度。然而,它的子RadioButton只延伸到内容的宽度。
具体地说,我希望第二个RadioButton旁边的文本框延伸到面板的其余部分。我如何才能做到这一点?
<MUXC:RadioButtons
Header="General Survey"
HorizontalContentAlignment="Stretch">
<RadioButton x:Name="PhysicalExam_General_Normal" Content="Normal"/>
<RadioButton x:Name="PhysicalExam_General_Abnormal" >
<Grid >
<Grid.ColumnDefinitions>
<ColumnDefinition Width="2*"/>
<ColumnDefinition Width="8*"/>
</Grid.ColumnDefinitions>
<TextBlock Grid.Column="0" Text="Abnormal" />
<TextBox Grid.Column="1" Margin="10,0,0,0" />
</Grid>
</RadioButton>
</MUXC:RadioButtons>
在VS设计视图中,当我单击RadioButtons父控件时,可以看到宽度如预期的那样拉伸。但是,当我单击每个RadioButton时,它们都不是。
发布于 2020-07-27 06:20:11
您可以尝试将RadioButton的宽度设置为RadioButtons的ActualWidth,然后将RadioButton的HorizontalContentAlignment设置为Stretch。要设置RadioButton的宽度,可以订阅RadioButtons的SizeChanged事件。
.xaml:
<MUXC:RadioButtons Header="General Survey" SizeChanged="RadioButtonsGroup_SizeChanged" x:Name="RadioButtonsGroup">
<RadioButton x:Name="PhysicalExam_General_Normal" Content="Normal"/>
<RadioButton x:Name="PhysicalExam_General_Abnormal" HorizontalContentAlignment="Stretch">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="2*"/>
<ColumnDefinition Width="8*"/>
</Grid.ColumnDefinitions>
<TextBlock Grid.Column="0" Text="Abnormal" />
<TextBox Grid.Column="1" Margin="10,0,0,0" />
</Grid>
</RadioButton>
</MUXC:RadioButtons>
.cs:
private void RadioButtonsGroup_SizeChanged(object sender, SizeChangedEventArgs e)
{
PhysicalExam_General_Abnormal.Width = RadioButtonsGroup.ActualWidth;
}
更新:
在默认样式的RadioButtons中,它使用ColumnMajorUniformToLargestGridLayout来放置每个RadioButton。它似乎限制了RadioButton的宽度,您可以将其注释掉以使用默认布局。此外,您仍然需要将HorizontalAlignment和HorizontalContentAlignment设置为Stretch。例如:
<Page.Resources>
<Style x:Key="RadioButtonsStyle1" TargetType="MUXC:RadioButtons">
<Setter Property="IsTabStop" Value="False"/>
<Setter Property="AutomationProperties.AccessibilityView" Value="Raw"/>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="MUXC:RadioButtons">
<StackPanel>
<ContentPresenter ContentTemplate="{TemplateBinding HeaderTemplate}" Content="{TemplateBinding Header}"/>
<MUXC:ItemsRepeater Background="Red" HorizontalAlignment="Stretch" x:Name="InnerRepeater" ItemTemplate="{TemplateBinding ItemTemplate}">
</MUXC:ItemsRepeater>
</StackPanel>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</Page.Resources>
<MUXC:RadioButtons Header="General Survey" Style="{StaticResource RadioButtonsStyle1}" x:Name="RadioButtonsGroup">
<RadioButton x:Name="PhysicalExam_General_Normal" Content="Normal"/>
<RadioButton x:Name="PhysicalExam_General_Abnormal" HorizontalAlignment="Stretch" HorizontalContentAlignment="Stretch">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="2*"/>
<ColumnDefinition Width="8*"/>
</Grid.ColumnDefinitions>
<TextBlock Grid.Column="0" Text="Abnormal" />
<TextBox Grid.Column="1" Margin="10,0,0,0" />
</Grid>
</RadioButton>
</MUXC:RadioButtons>
https://stackoverflow.com/questions/63108740
复制相似问题