Radiobutton Равномерное горизонтальное выравнивание - PullRequest
1 голос
/ 18 марта 2012

Есть ли способ равномерного расположения радиокнопок, включая текст радиокнопок? Я пробовал StackPanel с Orientation = Horizontal, DockPanel и UniformGrid, но мне не удалось добиться точного вида, который я получаю, это ровное количество пустого пространства между элементами управления без необходимости переноса или усечения текста.

StackPanel Alignment Horizontal

UniformGrid One Row

<GroupBox Name="grpLegend" Header="{x:Static res:Strings.ChartOptionsDisplayControlView_GroupBox_Legend}">
                <ItemsControl
                    ItemsSource="{Binding IsAsync=True, Path=AvailablePitchbookLegendPosition}">
                    <ItemsControl.ItemTemplate>
                        <DataTemplate>
                            <RadioButton
                                Content="{Binding IsAsync=True, Path=DisplayName}"
                                IsChecked="{Binding IsAsync=True, Path=IsSelected}"
                                GroupName="LegendPosition"
                                Margin="2,3.5" />
                        </DataTemplate>
                    </ItemsControl.ItemTemplate>
                    <ItemsControl.ItemsPanel>
                        <ItemsPanelTemplate>
                            <StackPanel Orientation="Horizontal"/>
                        </ItemsPanelTemplate>
                    </ItemsControl.ItemsPanel>
                </ItemsControl>
            </GroupBox>

1 Ответ

3 голосов
/ 18 марта 2012
<Grid>
    <Grid.ColumnDefinitions>
        <ColumnDefinition Width="Auto"/>
        <ColumnDefinition/>
        <ColumnDefinition Width="Auto"/>
    </Grid.ColumnDefinitions>

    <RadioButton Grid.Column="0" Content="Left"/>
    <RadioButton Grid.Column="1" HorizontalAlignment="Center" Content="Center"/>
    <RadioButton Grid.Column="2" Content="Right"/>
</Grid>

Если эта Сетка была частью ItemTemplate списка, и вы хотели синхронизировать ширину столбцов сетки, вы должны использовать свойство SharedSizeGroup.

<Grid>
    <Grid.ColumnDefinitions>
        <ColumnDefinition Width="Auto" SharedSizeGroup="c1"/>
        <ColumnDefinition SharedSizeGroup="c2"/>
        <ColumnDefinition Width="Auto" SharedSizeGroup="c3"/>
    </Grid.ColumnDefinitions>

    <RadioButton Grid.Column="0" Content="Left"/>
    <RadioButton Grid.Column="1" HorizontalAlignment="Center" Content="Center"/>
    <RadioButton Grid.Column="2" Content="Right"/>
</Grid>

и затем в подходящем родительском контейнере используйте вложенное свойство Grid.IsSharedSizeScope = "true"

<ListBox Grid.IsSharedSizeScope="True" ItemTemplate={StaticResource RadioButtonTemplate}/>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...