【发布时间】:2012-12-11 12:22:42
【问题描述】:
我有一个包含两个单选按钮(Option 1 和 Option 2)的堆栈面板。如果用户选择选项 2,则应激活一个文本框,允许用户提供有关选项 2 的更多详细信息。
我想出了两个解决方案,但都不是我想要的。它们是这样的:
解决方案 #1
解决方案 #1 的 XAML 代码非常简单,结果非常明显:
<StackPanel Grid.Row="7" Grid.Column="1">
<RadioButton>Option 1</RadioButton>
<RadioButton>Option 2:</RadioButton>
<TextBox>Some Text that details option 2</TextBox>
</StackPanel>
这里的好处是文本框使用了整个宽度。然而,这不是我想要的,因为文本框应该放在选项 2 旁边。
解决方案 #2
下一步是在 RadioButton-tags 中创建一个网格。这使我可以将文本框放置在正确的位置,但宽度不再缩放到 100 %。
代码如下所示:
<StackPanel Grid.Row="8" Grid.Column="1">
<RadioButton>Option 1</RadioButton>
<RadioButton>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="130*" />
</Grid.ColumnDefinitions>
<TextBlock Grid.Column="0" >Option 2:</TextBlock>
<TextBox Grid.Column="1" Margin="10,0,0,0">Some Text that details option 2</TextBox>
</Grid>
</RadioButton>
</StackPanel>
除了在我看来这是一个设计过度的解决方案之外,问题就在这里:如何将单选按钮条目中的网格宽度设置为 100%?
此处提出了类似的问题 (How to set width to 100% in WPF),但使用 ItemContainerStyle 属性不适用于单选按钮。
在我看来,一定有一个更简单(或至少可行)的解决方案。有人可以帮忙吗?
【问题讨论】:
标签: c# wpf xaml radio-button