ContentTemplate 不适用于RadioButton

问题描述 投票:0回答:1

我的 XAML 文件中有这段代码,据说应该设置

RadioButtons
Page
的样式,这几乎是我在 StackOverflow 上找到的一种方法:

<ContentPage.Resources>
    <ControlTemplate x:Key="RadioButtonTemplate">
        <Border BackgroundColor="Transparent" Stroke="Transparent">
            <Grid>
                <Grid.ColumnDefinitions>
                    <ColumnDefinition Width="20" />
                    <ColumnDefinition Width="Auto" />
                </Grid.ColumnDefinitions>
                <Grid
                    Grid.Column="0"
                    HeightRequest="20"
                    HorizontalOptions="Center"
                    VerticalOptions="Center"
                    WidthRequest="20">
                    <Ellipse
                        x:Name="border_circle"
                        Fill="Transparent"
                        HeightRequest="18"
                        HorizontalOptions="Center"
                        Stroke="{AppThemeBinding Light='#dddddd',
                                                 Dark='#999999'}"
                        StrokeThickness="2"
                        VerticalOptions="Center"
                        WidthRequest="18" />
                    <Ellipse
                        x:Name="check"
                        Fill="{AppThemeBinding Light='#dddddd',
                                               Dark='#999999'}"
                        HeightRequest="10"
                        HorizontalOptions="Center"
                        VerticalOptions="Center"
                        WidthRequest="10" />
                </Grid>
                <ContentPresenter
                    Grid.Column="1"
                    Margin="10,0,0,0"
                    HorizontalOptions="Start"
                    VerticalOptions="Center" />
            </Grid>
            <VisualStateManager.VisualStateGroups>
                <VisualStateGroupList>
                    <VisualStateGroup x:Name="CheckedStates">
                        <VisualState x:Name="Checked">
                            <VisualState.Setters>
                                <Setter TargetName="check" Property="Opacity" Value="1" />
                            </VisualState.Setters>
                        </VisualState>
                        <VisualState x:Name="Unchecked">
                            <VisualState.Setters>
                                <Setter TargetName="check" Property="Opacity" Value="0" />
                            </VisualState.Setters>
                        </VisualState>
                    </VisualStateGroup>
                </VisualStateGroupList>
            </VisualStateManager.VisualStateGroups>
        </Border>
    </ControlTemplate>

    <Style x:Key="RadioButtonStyle" TargetType="RadioButton">
        <Setter Property="ControlTemplate" Value="{StaticResource RadioButtonTemplate}" />
    </Style>
</ContentPage.Resources>

问题是样式没有应用。

RadioButtons
保持其原来的颜色。我是不是错过了什么?

xaml radio-button maui
1个回答
0
投票

样式没有完全应用的原因是因为你明确设置了样式,

<Style x:Key="RadioButtonStyle"

根据文档

显式 Style 对象是通过指定 TargetType 和 x:Key 值,并将目标元素的 Style 属性设置为 x:Key 引用来定义的。

所以当你在XAML中使用

RadioButton
的Style时,你也应该设置

<RadioButton ... Style="{StaticResource RadioButtonStyle}">

或者您可以在 ControlTemplate 中设置隐式样式(通过删除

x:Key="RadioButtonStyle"
)。

有关更多信息,请参阅使用 XAML 设计应用程序重新定义 RadioButton 外观

© www.soinside.com 2019 - 2024. All rights reserved.