WPF 控件自定义模板(举例如一个单选菜单)

样式代码!

 <UserControl.Resources>

         //定义一个样式
        <Style x:Key="RadButton" TargetType="RadioButton">
            <Setter Property="Margin" Value="12 20 0 0"/>
            <Setter Property="Background" Value="Red" />
            <Setter Property="HorizontalAlignment" Value="Center"/>
            <Setter Property="FontSize" Value="18"/>
            <Setter Property="BorderBrush" Value="#FF0EFCFF"/>
            <Setter Property="Foreground" Value="#FF0EFCFF"/>
            <Setter Property="BorderThickness" Value="2"/>
            <Setter Property="Content" Value="2"/>
            <Setter Property="Template">
                <Setter.Value>
                    <ControlTemplate TargetType="RadioButton">
                        <Grid>//规定模板 需要通过触发器指定修改属性的标签需要设置一个Name
                            <Border Name="Bord" Width="137" Height="40" Background="Red" BorderBrush="#FF0EFCFF" BorderThickness="2">
                                <Label Name="Lab" HorizontalAlignment="Center" VerticalAlignment="Center" FontSize="18" Foreground="#FF0EFCFF" Content="{TemplateBinding Content}"></Label>
                            </Border>
                        </Grid>

                        <ControlTemplate.Triggers>
                            <Trigger Property="IsChecked" Value="True">//选中状态修改Bord的背景色
                                <Setter  Property="Background" Value="#FF6076AD" TargetName="Bord"/>//指定Bord标签修改它的属性
                            </Trigger>
                            <Trigger Property="IsChecked" Value="False">//选中状态修改Bord的背景色
                                <Setter  Property="Background" Value="Transparent" TargetName="Bord"/>//指定Bord标签修改它的属性
                            </Trigger>
                        </ControlTemplate.Triggers>
                    </ControlTemplate>
                </Setter.Value>
            </Setter>
        </Style> 
    </UserControl.Resources>

//测试代码

​​​​​​​ <WrapPanel>
                    <RadioButton Style="{DynamicResource RadButton}" GroupName="Radreason" IsChecked="True">单图模式</RadioButton>
                    <RadioButton Style="{DynamicResource RadButton}" GroupName="Radreason">2*2 模式</RadioButton>
                    <RadioButton Style="{DynamicResource RadButton}" GroupName="Radreason">3*3 模式</RadioButton>
                    <!--<Border  Margin="12 20 0 0" Width="137" Height="40" Background="Red"></Border>-->
                    <!--<Button Style="{DynamicResource Button}" Selector.IsSelected="True">单图模式</Button>
                    <Button Style="{DynamicResource Button}">2*2 模式</Button>
                    <Button Style="{DynamicResource Button}">3*3 模式</Button>-->
                </WrapPanel>

Guess you like

Origin blog.csdn.net/qq_38341160/article/details/120493773
Recommended