C# WPF堆栈面板显示隐藏子级
我有一个带两个单选按钮的stackpanel。一个是选项A,另一个是选项B。一次只能选择一个选项。当我选中选项B时,我想在选项B radiobuttion的正下方和堆栈面板内显示两个文本框。当我再次选择选项A时,文本框应该不可见。仅使用XAML如何实现这一点?只要有一个事件,当您选择选项A时,两个C# WPF堆栈面板显示隐藏子级,c#,.net,wpf,xaml,C#,.net,Wpf,Xaml,我有一个带两个单选按钮的stackpanel。一个是选项A,另一个是选项B。一次只能选择一个选项。当我选中选项B时,我想在选项B radiobuttion的正下方和堆栈面板内显示两个文本框。当我再次选择选项A时,文本框应该不可见。仅使用XAML如何实现这一点?只要有一个事件,当您选择选项A时,两个文本框都将设置为: Textbox.Visibility = Collapsed or Hidden 取决于您希望如何显示它们。您可以绑定到单选按钮已选中属性,并使用内置的BooleantVisibi
文本框都将设置为:
Textbox.Visibility = Collapsed or Hidden
取决于您希望如何显示它们。您可以绑定到单选按钮
已选中
属性,并使用内置的BooleantVisibilityConverter
<Window x:Class="WpfApplication4.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="clr-namespace:WpfApplication4"
Title="MainWindow" Height="300" Width="400" Name="UI" >
<Window.Resources>
<BooleanToVisibilityConverter x:Key="BoolToVisibilityConverter" />
</Window.Resources>
<Grid>
<StackPanel Margin="0,0,0,202">
<RadioButton x:Name="OptionA" Content="OptionA" />
<RadioButton x:Name="OptionB" Content="OptionB" />
</StackPanel>
<TextBox Visibility="{Binding ElementName=OptionB, Path=IsChecked, Converter={StaticResource BoolToVisibilityConverter}}" Text="My Textbox" Margin="0,65,165,167"/>
</Grid>
</Window>
只有选中“OptionB”时,才会显示文本框。尝试此代码,希望能解决您的问题
将文本框放在堆栈面板中,并将堆栈面板的可见性属性设置为隐藏。
并在OptionButton事件上编写代码,以设置stackPanel的可见性属性
享受
谢谢
Ck-Nitin(TinTin)仅在XAML中使用,甚至不使用转换器。在资源中定义ControlTemplate,如
<Window.Resources>
<ControlTemplate x:Key="RadioButtonContent">
<Grid>
<StackPanel Margin="0,0,0,202">
<RadioButton x:Name="OptionA" Content="OptionA" />
<RadioButton x:Name="OptionB" Content="OptionB" />
</StackPanel>
<TextBox x:Name="MyTextBox"
Visibility="Visible"
Text="My Textbox" Margin="0,65,165,167"/>
</Grid>
<ControlTemplate.Triggers>
<DataTrigger Binding="{Binding ElementName=OptionB, Path=IsChecked}" Value="False">
<Setter TargetName="MyTextBox" Property="Visibility" Value="Hidden"/>
</DataTrigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Window.Resources>
像这样使用它
<ContentControl Template="{StaticResource RadioButtonContent}"/>
希望对您有所帮助。可能重复:正确。发布后不久我意识到了这一点。两个问题。首先,可见性可能应更改为“折叠”,而不是“隐藏”。其次,这不仅仅是问题中特别要求的XAML。
<Window.Resources>
<ControlTemplate x:Key="RadioButtonContent">
<Grid>
<StackPanel Margin="0,0,0,202">
<RadioButton x:Name="OptionA" Content="OptionA" />
<RadioButton x:Name="OptionB" Content="OptionB" />
</StackPanel>
<TextBox x:Name="MyTextBox"
Visibility="Visible"
Text="My Textbox" Margin="0,65,165,167"/>
</Grid>
<ControlTemplate.Triggers>
<DataTrigger Binding="{Binding ElementName=OptionB, Path=IsChecked}" Value="False">
<Setter TargetName="MyTextBox" Property="Visibility" Value="Hidden"/>
</DataTrigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Window.Resources>
<ContentControl Template="{StaticResource RadioButtonContent}"/>