C# 如何动态设置模板属性选项

C# 如何动态设置模板属性选项,c#,.net,wpf,C#,.net,Wpf,我想为我的自定义按钮模板提供一个模板属性,其中包括影响图像内容的不同选项 即 接近 最大化 恢复 最小化 因此,当控件的用户想要将按钮的类型设置为最大化时,他们从属性检查器的下拉列表中选择它,然后嵌入在按钮中的图像控件的源更改为“{DynamicResource MaximiseGlyph}” 我如何允许用户为按钮选择模板,然后选择适当的图像控制源 以下是我的按钮模板的当前基本代码: <Style x:Key="WindowControlButton" TargetType="{x:Typ

我想为我的自定义按钮模板提供一个模板属性,其中包括影响图像内容的不同选项

  • 接近
  • 最大化
  • 恢复
  • 最小化
  • 因此,当控件的用户想要将按钮的类型设置为最大化时,他们从属性检查器的下拉列表中选择它,然后嵌入在按钮中的图像控件的源更改为“{DynamicResource MaximiseGlyph}”

    我如何允许用户为按钮选择模板,然后选择适当的图像控制源

    以下是我的按钮模板的当前基本代码:

    <Style x:Key="WindowControlButton" TargetType="{x:Type Button}">
        <Style.Resources>
            <BitmapImage x:Key="RestoreGlyph" CreateOptions="IgnoreImageCache" CacheOption="OnLoad" UriSource="\Restore.png"/>
            <BitmapImage x:Key="MaximiseGlyph" CreateOptions="IgnoreImageCache" CacheOption="OnLoad" UriSource="\Maximise.png"/>
            <BitmapImage x:Key="CloseGlyph" CreateOptions="IgnoreImageCache" CacheOption="OnLoad" UriSource="\Close.png"/>
            <BitmapImage x:Key="MinimiseGlyph" CreateOptions="IgnoreImageCache" CacheOption="OnLoad" UriSource="\Minimise.png"/>
        </Style.Resources>
        <Setter Property="Template">
            <Setter.Value>
                <ControlTemplate TargetType="{x:Type Button}">
                    <Grid>
                        <Ellipse Fill="Black" Opacity="0.7">
                            <Ellipse.Stroke>
                                <LinearGradientBrush EndPoint="0.5,1" MappingMode="RelativeToBoundingBox" StartPoint="0.5,0">
                                    <GradientStop Color="White" Offset="0"/>
                                    <GradientStop Color="#FFB8B8B8" Offset="1"/>
                                </LinearGradientBrush>
                            </Ellipse.Stroke>
                        </Ellipse>
                        <Image Source="{DynamicResource RestoreGlyph}"/>
                    </Grid>
                    <ControlTemplate.Triggers>
                        <Trigger Property="IsFocused" Value="True"/>
                        <Trigger Property="IsDefaulted" Value="True"/>
                        <Trigger Property="IsMouseOver" Value="True"/>
                        <Trigger Property="IsPressed" Value="True"/>
                        <Trigger Property="IsEnabled" Value="False"/>
                    </ControlTemplate.Triggers>
                </ControlTemplate>
            </Setter.Value>
        </Setter>
    </Style>
    

    您需要创建一个自定义控件,该控件继承一个按钮来存储新属性,并允许将模板绑定到它

    可以按照本教程创建自定义控件


    你能澄清你的问题吗?我如何将模板的a属性设置为四个值中的一个,然后使用户选择的值更改按钮内图像的源属性为四个不同值中的一个谢谢,我有一种感觉,我必须创建一个自定义控件,但我希望避免这种情况,而选择控件模板。我是否能够使用现有代码,并使用控件模板和内容容器将其集成到自定义控件中,然后将自定义控件用作包装,以公开以编程方式将内容设置为
    的选项