2

RadioButtonのコンテンツとして、使用可能な領域全体に広がるグリッドを使用したいのですが、RadioButtonの箇条書きを垂直方向に揃えたいと思います。

グリッドを領域全体に拡大するのは簡単です。RadioButtonでHorizo​​ntalContentAlignmentプロパティを設定するだけです。

<RadioButton HorizontalContentAlignment="Stretch">
    <Grid>
        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="Auto"/>
            <ColumnDefinition Width="*"/>
        </Grid.ColumnDefinitions>
        <Grid.RowDefinitions>
            <RowDefinition Height="Auto"/>
            <RowDefinition Height="Auto"/>
        </Grid.RowDefinitions>
        <TextBlock>Foo</TextBlock>
        <TextBox Grid.Column="1"/>
        <TextBlock Grid.Row="1">The quick brown fox</TextBlock>
        <TextBox Grid.Row="1" Grid.Column="1"/>
    </Grid>
</RadioButton>

そして、この古い質問に対するSimon Weaverの回答に続いて、ラジオボタンの弾丸を比較的簡単に垂直に揃えることができます。

<RadioButton HorizontalContentAlignment="Stretch">
    <TextBlock Grid.IsSharedSizeScope="True">
        <Grid>
            <Grid.ColumnDefinitions>
                <ColumnDefinition Width="Auto" SharedSizeGroup="A"/>
                <ColumnDefinition Width="*"/>
            </Grid.ColumnDefinitions>
            <TextBlock>Foo</TextBlock>
            <TextBox Grid.Column="1"/>
        </Grid>
        <LineBreak/>
        <Grid>
            <Grid.ColumnDefinitions>
                <ColumnDefinition Width="Auto" SharedSizeGroup="A"/>
                <ColumnDefinition Width="*"/>
            </Grid.ColumnDefinitions>
            <TextBlock Grid.Row="1">The quick brown fox</TextBlock>
            <TextBox Grid.Row="1" Grid.Column="1"/>
        </Grid>
    </TextBlock>
</RadioButton>

問題は、それを実行すると、コンテンツが拡張されなくなることです。 どちらか一方

垂直に配置された弾丸とストレッチグリッドを取得するにはどうすればよいですか?

4

2 に答える 2

2

TextBlockは適切に引き伸ばされていますが、その中のグリッドは引き伸ばされていません。おそらく、それがTextBlockの動作方法です。

以下は少しハッキーですが、動作します:

<RadioButton HorizontalContentAlignment="Stretch">
    <TextBlock Name="Text" Grid.IsSharedSizeScope="True">
        <Grid Width="{Binding ElementName=Text, Path=ActualWidth}">
于 2012-10-17T18:49:10.337 に答える
1

これは視覚効果のために働くでしょう。機能要件をリストしていなかったので、イベントマッピングなしで機能するかどうかはわかりません。

<Grid>
    <Grid.ColumnDefinitions>
        <ColumnDefinition Width="Auto"/>
        <ColumnDefinition Width="Auto"/>
        <ColumnDefinition Width="*"/>
    </Grid.ColumnDefinitions>
    <Grid.RowDefinitions>
        <RowDefinition Height="Auto"/>
        <RowDefinition Height="Auto"/>
    </Grid.RowDefinitions>
    <RadioButton Grid.Column="0" Grid.RowSpan="2" Content=""/>
    <TextBlock Grid.Column="1">Foo</TextBlock>
    <TextBox Grid.Column="2"/>
    <TextBlock Grid.Row="1" Grid.Column="1">The quick brown fox</TextBlock>
    <TextBox Grid.Row="1" Grid.Column="2"/>
</Grid>

ここに画像の説明を入力してください

于 2012-10-17T18:47:20.463 に答える