Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/271.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# WPF堆栈面板显示隐藏子级_C#_.net_Wpf_Xaml - Fatal编程技术网

C# WPF堆栈面板显示隐藏子级

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

我有一个带两个单选按钮的stackpanel。一个是选项A,另一个是选项B。一次只能选择一个选项。当我选中选项B时,我想在选项B radiobuttion的正下方和堆栈面板内显示两个文本框。当我再次选择选项A时,文本框应该不可见。仅使用XAML如何实现这一点?

只要有一个事件,当您选择选项A时,两个
文本框都将设置为:

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}"/>