代码之家  ›  专栏  ›  技术社区  ›  Tom Anderson

如何使这个Xaml成为模板?

  •  1
  • Tom Anderson  · 技术社区  · 17 年前

    如果不使用代码,如何将其转换为模板?

    提前谢谢。

        <RadioButton Width="35" Height="35" Content="RadioButton" Visibility="Visible" IsChecked="False" Margin="2.5,2.5,2.5,2.5" Template="{DynamicResource RadioTemplate}" >
            <RadioButton.Resources>
                <ControlTemplate x:Key="RadioTemplate" TargetType="{x:Type RadioButton}">
                    <BulletDecorator Background="Transparent">
                        <BulletDecorator.Bullet>
                            <StackPanel>
                                <Image Width="Auto" Height="Auto" Source="..\Content\img.png" Stretch="Fill" />
                            </StackPanel>
                        </BulletDecorator.Bullet>
                    </BulletDecorator>
                </ControlTemplate>
            </RadioButton.Resources>
            <RadioButton.BitmapEffect>
                <OuterGlowBitmapEffect x:Name="imageGlow" GlowColor="#FFeeba00" Opacity="1" GlowSize="0" />
            </RadioButton.BitmapEffect>
            <RadioButton.Triggers>
                <EventTrigger RoutedEvent="ToggleButton.Checked">
                    <BeginStoryboard>
                        <Storyboard>
                            <DoubleAnimation Storyboard.TargetName="imageGlow" Storyboard.TargetProperty="GlowSize" From="0" To="10" Duration="0:0:.15" AutoReverse="False" />
                        </Storyboard>
                    </BeginStoryboard>
                </EventTrigger>
                <EventTrigger RoutedEvent="ToggleButton.Unchecked">
                    <BeginStoryboard>
                        <Storyboard>
                            <DoubleAnimation Storyboard.TargetName="imageGlow" Storyboard.TargetProperty="GlowSize" From="10" To="0" Duration="0:0:.15" AutoReverse="False" />
                        </Storyboard>
                    </BeginStoryboard>
                </EventTrigger>
            </RadioButton.Triggers>
        </RadioButton>
    
    1 回复  |  直到 14 年前
        1
  •  3
  •   Josh G    17 年前

    您需要创建一个样式。

    <Style x:Key="RadioStyle" TargetType="{x:Type RadioButton}">
        <Setter Property="Width" Value="35"/>
        <Setter Property="Height" Value="35"/>
        <Setter Property="Margin" Value="2.5"/>
        <Setter Property="BitmapEffect">
            <Setter.Value>
                <OuterGlowBitmapEffect GlowColor="#FFeeba00" Opacity="1" GlowSize="0" />
            </Setter.Value>
        </Setter>
        <Setter Property="Template">
            <Setter.Value>
                <ControlTemplate TargetType="{x:Type RadioButton}">
                    <BulletDecorator Background="Transparent">
                        <BulletDecorator.Bullet>
                            <StackPanel>
                                <ContentPresenter/>
                            </StackPanel>
                        </BulletDecorator.Bullet>
                    </BulletDecorator>
                </ControlTemplate>
            </Setter.Value>
        </Setter>
    <!--Continued-->
    

        <Style.Triggers>
            <EventTrigger RoutedEvent="ToggleButton.Checked">
                <BeginStoryboard>
                    <Storyboard>
                        <DoubleAnimation Storyboard.TargetProperty="BitmapEffect.GlowSize" From="0" To="10" Duration="0:0:.15" AutoReverse="False" />
                    </Storyboard>
                </BeginStoryboard>
            </EventTrigger>
            <EventTrigger RoutedEvent="ToggleButton.Unchecked">
                <BeginStoryboard>
                    <Storyboard>
                        <DoubleAnimation Storyboard.TargetProperty="BitmapEffect.GlowSize" From="10" To="0" Duration="0:0:.15" AutoReverse="False" />
                    </Storyboard>
                </BeginStoryboard>
            </EventTrigger>
        </Style.Triggers>
    </Style>
    

    <RadioButton Style="{DynamicResource RadioStyle}" Visibility="Visible" IsChecked="False">
        <Image Width="Auto" Height="Auto" Source="..\Content\img.png" Stretch="Fill" />
    </RadioButton>