2

2つのラジオボタンが付いたスタックパネルがあります。1つはオプションAで、もう1つはオプションBです。一度に選択できるのは1つだけです。オプションBをオンにすると、オプションBのラジオバットのすぐ下とスタックパネル内にいくつかのテキストボックスを表示したいと思います。また、オプションAを再度選択すると、テキストボックスが表示されないはずです。XAMLを使用するだけでこれをどのように実現できますか?

4

4 に答える 4

3

RadioButton IsCheckedプロパティにバインドして、組み込みを使用できますBooleanToVisibilityConverter

<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>

これはTextBox、「OptionB」がチェックされている場合にのみ表示されます。

于 2012-12-20T00:38:11.763 に答える
2

コンバーターさえない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}"/>

それが役に立てば幸い..

于 2012-12-20T04:55:23.723 に答える
1

このコードを試してみてください希望はあなたの問題を解決します。

TextBoxをスタックパネルに配置し、スタックパネルのVisibilityプロパティをHiddenに設定します。OptionButtonイベントにコードを記述して、stackPanelのVisibilityプロパティを設定します。

    <Grid.RowDefinitions>
        <RowDefinition Height="33*"></RowDefinition>
        <RowDefinition Height="33*"></RowDefinition>
        <RowDefinition Height="33*"></RowDefinition>
    </Grid.RowDefinitions>


    <StackPanel Margin="20" Orientation="Vertical" VerticalAlignment="Center" HorizontalAlignment="Left" Grid.Column="0" Grid.Row="0">
        <RadioButton Name="rdA" Content="Option A" GroupName="txtBoxGroup" Checked="rdA_Checked"></RadioButton>
        <RadioButton Name="rdB" Content="Option B" GroupName="txtBoxGroup" Checked="rdB_Checked"></RadioButton>
    </StackPanel>

    <StackPanel Margin="20" Name="TxtBxStackPanel" Height="auto"  Orientation="Vertical" Grid.Column="0" Grid.Row="1" Visibility="Hidden">
        <Label Content="My TextBox" VerticalAlignment="Center" HorizontalAlignment="Left"></Label>
        <TextBox Name="txtValue" Height="20" Width="200" HorizontalAlignment="Left"></TextBox>
    </StackPanel>

</Grid>

コードの後ろに-

private void rdB_Checked(object sender, RoutedEventArgs e)
{

    TxtBxStackPanel.Visibility = Visibility.Visible;
}
private void rdA_Checked(object sender, RoutedEventArgs e)
{
    TxtBxStackPanel.Visibility = Visibility.Hidden;
}

楽しみ !!!!!!

ありがとう

Ck Nitin(TinTin)

于 2012-12-20T04:27:25.137 に答える
0

オプションAを選択すると、両方が次のTextBoxesように設定されるというイベントが発生します。

Textbox.Visibility = Collapsed or Hidden

それらをどのように表示したいかによって異なります。

于 2012-12-20T00:08:54.227 に答える