将单选按钮对准弹出窗口的右侧

时间:2016-03-22 08:36:18

标签: win-universal-app

我有一个选择颜色的弹出窗口。

<Popup x:Name="colorSelectorPopup">
    <Border BorderThickness="1" BorderBrush="Gray">
            <StackPanel HorizontalAlignment="Stretch">
                <Grid x:Name="colorSelectorTitle" Height="40" VerticalAlignment="Top">
                    <TextBlock x:Name="popupTitle" TextTrimming="CharacterEllipsis" FontSize="16" HorizontalAlignment="Left" VerticalAlignment="Center" Margin="8"/>
                </Grid>
                <ListView x:Name="colorList" HorizontalAlignment="Stretch" Background="White">
                    <ListView.ItemTemplate>
                        <DataTemplate>
                            <Grid HorizontalAlignment="Stretch">
                                <Grid.ColumnDefinitions>
                                    <ColumnDefinition Width="*"/>
                                    <ColumnDefinition Width="Auto"/>
                                </Grid.ColumnDefinitions>
                                <TextBlock Grid.Column="0" x:Name="tbColor" Text="{Binding ColorName}" Foreground="{Binding ForegroundColor}" HorizontalAlignment="Left"/>
                                <RadioButton Grid.Column="1" x:Name="radioColor" GroupName="colorRadio" Tag="{Binding SelectionColor}" MinWidth="32" Checked="radioColor_Checked"/>
                            </Grid>
                        </DataTemplate>
                    </ListView.ItemTemplate>
                </ListView>
            </StackPanel>
    </Border>
</Popup>

我希望单选按钮显示在右侧。但它看起来像在图像中。

如何将单选按钮移到右侧?

enter image description here

2 个答案:

答案 0 :(得分:1)

我从here得到了答案。

通过添加以下xaml,我得到了所需的输出。

<ListView.ItemContainerStyle>
    <Style TargetType="ListViewItem">
        <Setter Property="HorizontalContentAlignment" Value="Stretch" />
    </Style>
</ListView.ItemContainerStyle>

这对我有用。我更新了我的xaml如下

<Popup x:Name="colorSelectorPopup">
    <Border BorderThickness="1" BorderBrush="Gray">
            <StackPanel HorizontalAlignment="Stretch">
                <Grid x:Name="colorSelectorTitle" Height="40" VerticalAlignment="Top">
                    <TextBlock x:Name="popupTitle" TextTrimming="CharacterEllipsis" FontSize="16" HorizontalAlignment="Left" VerticalAlignment="Center" Margin="8"/>
                </Grid>
                <ListView x:Name="colorList" HorizontalAlignment="Stretch" Background="White">
                <ListView.ItemContainerStyle>
                                <Style TargetType="ListViewItem">
                                    <Setter Property="HorizontalContentAlignment" Value="Stretch" />
                                </Style>
                    </ListView.ItemContainerStyle>
                    <ListView.ItemTemplate>
                        <DataTemplate>
                            <Grid HorizontalAlignment="Stretch">
                                <Grid.ColumnDefinitions>
                                    <ColumnDefinition Width="*"/>
                                    <ColumnDefinition Width="Auto"/>
                                </Grid.ColumnDefinitions>
                                <TextBlock Grid.Column="0" x:Name="tbColor" Text="{Binding ColorName}" Foreground="{Binding ForegroundColor}" HorizontalAlignment="Left"/>
                                <RadioButton Grid.Column="1" x:Name="radioColor" GroupName="colorRadio" Tag="{Binding SelectionColor}" MinWidth="32" Checked="radioColor_Checked"/>
                            </Grid>
                        </DataTemplate>
                    </ListView.ItemTemplate>
                </ListView>
            </StackPanel>
    </Border>
</Popup>

答案 1 :(得分:0)

由于网格只包含2列而第2列只包含单选按钮,因此我将列定义设置为固定的第2列而不是auto。看看是否有效。

<Grid.ColumnDefinitions>
    <ColumnDefinition Width="*"/>
    <ColumnDefinition Width="40"/>
</Grid.ColumnDefinitions>