C# WPF:将文本框放置在stackpanel中radiobutton旁边
我有一个stackpanel包含两个单选按钮(选项1和选项2)。如果用户选择选项2,则文本框应处于活动状态,允许用户提供有关选项2的更多详细信息 我提出了两个解决方案,但都不是我想要的。这就是它们的样子: 解决方案#1 解决方案#1的XAML代码非常简单,结果非常明显:C# WPF:将文本框放置在stackpanel中radiobutton旁边,c#,wpf,xaml,radio-button,C#,Wpf,Xaml,Radio Button,我有一个stackpanel包含两个单选按钮(选项1和选项2)。如果用户选择选项2,则文本框应处于活动状态,允许用户提供有关选项2的更多详细信息 我提出了两个解决方案,但都不是我想要的。这就是它们的样子: 解决方案#1 解决方案#1的XAML代码非常简单,结果非常明显: 选择1 备选案文2: 一些文本详细说明了选项2 这里的好处是文本框使用整个宽度。然而,这不是我想要的,因为文本框应该放在选项2的旁边 解决方案#2 下一步是在RadioButton标签中创建网格。这允许我将文本框放置在正确
选择1
备选案文2:
一些文本详细说明了选项2
这里的好处是文本框使用整个宽度。然而,这不是我想要的,因为文本框应该放在选项2的旁边
解决方案#2
下一步是在RadioButton标签中创建网格。这允许我将文本框放置在正确的位置,但宽度不再缩放到100%
代码如下所示:
选择1
备选案文2:
一些文本详细说明了选项2
除了在我看来这是一个过度设计的解决方案之外,还有一个问题:如何将单选按钮条目内的网格宽度设置为100%
这里也提出了类似的问题(),但使用ItemContainerStyle
属性不适用于单选按钮
在我看来,一定有一个更容易(或至少是可行的)解决方案。有人能帮忙吗?你可以尝试很多东西-
<StackPanel Grid.Row="8"
Grid.Column="1">
<RadioButton>Option 1</RadioButton>
<RadioButton HorizontalAlignment="Stretch" HorizontalContentAlignment="Stretch">
<DockPanel LastChildFill="True">
<TextBlock >Option 2:</TextBlock>
<TextBox Grid.Column="1"
Margin="10,0,0,0">Some Text that </TextBox>
</DockPanel>
</RadioButton>
</StackPanel>
选择1
备选案文2:
一些文本
或者,如果要保留网格,请执行以下操作:
<StackPanel Grid.Row="8"
Grid.Column="1">
<RadioButton>Option 1</RadioButton>
<RadioButton HorizontalAlignment="Stretch" HorizontalContentAlignment="Stretch">
<Grid HorizontalAlignment="Stretch">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<TextBlock >Option 2:</TextBlock>
<TextBox Grid.Column="1"
Margin="10,0,0,0">Some Text that </TextBox>
</Grid>
</RadioButton>
</StackPanel>
选择1
备选案文2:
一些文本
您可以随心所欲地设计。只需对所有单选按钮应用相同的GroupName
<StackPanel>
<RadioButton Content="Option1" GroupName="Question" />
<StackPanel Orientation="Horizontal">
<RadioButton Content="Option2" GroupName="Question" />
<TextBox Text="Other controls"/>
</StackPanel>
</StackPanel>
HorizontalAlignment还不够,他应该设置HorizontalContentAlignment您喜欢哪种解决方案?对我来说,网格解决方案更直观一些。你觉得怎么样?我更喜欢DockPanel。