Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
WPF:使自定义控件中的模板中嵌入控件的属性可用_Wpf_Xaml_Data Binding - Fatal编程技术网

WPF:使自定义控件中的模板中嵌入控件的属性可用

WPF:使自定义控件中的模板中嵌入控件的属性可用,wpf,xaml,data-binding,Wpf,Xaml,Data Binding,我有一个自定义控件IconMD,其属性为IconName,overlyname和overlyposition 我已将此控件嵌入另一个自定义控件IconButton中,如下所示: <ControlTemplate TargetType="{x:Type local:IconButton}"> <Border Background="{TemplateBinding Background}" BorderBrush="{TemplateBi

我有一个自定义控件
IconMD
,其属性为
IconName
overlyname
overlyposition

我已将此控件嵌入另一个自定义控件
IconButton
中,如下所示:

<ControlTemplate TargetType="{x:Type local:IconButton}">
    <Border 
        Background="{TemplateBinding Background}"
        BorderBrush="{TemplateBinding BorderBrush}"
        BorderThickness="{TemplateBinding BorderThickness}">
        <Border.Style>
            <Style TargetType="{x:Type Border}">
                <Setter Property="Opacity" Value="0.7"/>
                <Style.Triggers>
                    <Trigger Property="IsMouseOver" Value="True">
                        <Setter Property="Opacity" Value="1"/>
                    </Trigger>
                </Style.Triggers>
            </Style>
        </Border.Style>
        <Grid>
            <local:IconMD
                x:Name="_ButtonIcon"
                OverlayPosition="{TemplateBinding OverlayPosition}"
                IconName="{TemplateBinding IconName}"
                OverlayName="{TemplateBinding OverlayIconName}"
            />
        </Grid>
    </Border>
</ControlTemplate>
写这样的东西

<imCC:IconButton
    _ButtonIcon.IconName="mdi-account-card-details"
    _ButtonIcon.OverlayName="mdi-multiplication-box"/>

您可以将属性定义为附加属性,您可以在任何
ui元素
按钮
元素上设置这些属性

附加属性概述:



您可以将属性定义为附加属性,您可以在任何
ui元素
按钮
元素上设置这些属性

附加属性概述:



您可以使用附加属性而不是普通的依赖属性(在visual studio中使用剪切的
propa
创建)

如果在类
IconButton
中将
IconName
创建为附加属性,则将其设置如下:

<imCC:IconButton
    imCC:IconButton.IconName="mdi-account-card-details"
    ...

您可以使用附加属性而不是普通的依赖属性(在VisualStudio中使用剪切的
propa
创建)

如果在类
IconButton
中将
IconName
创建为附加属性,则将其设置如下:

<imCC:IconButton
    imCC:IconButton.IconName="mdi-account-card-details"
    ...

非常感谢。这是我一直在寻找的,但它必须是另一种方式,属性必须被定义-只有一次-在IconMD类中-IconMD将IconName作为附加属性,然后我将其设置为Yea,您决定在哪里实现附加属性并不重要。。。将它们放在
IconButton
中只是一个示例,可以用
IconMD
或一些
ButtonIcon
类或任何东西来替换。是的。在我的逻辑中,“IconButton、IconRepeatButton、IconToggleButton”都有需要设置的“图标(MD)”。在我看来,你的答案应该反映出你的逻辑——但我可能错了:)。无论如何,我接受了,因为它比另一个提出同样方法的答案更容易理解。谢谢!这是我一直在寻找的,但它必须是另一种方式,属性必须被定义-只有一次-在IconMD类中-IconMD将IconName作为附加属性,然后我将其设置为Yea,您决定在哪里实现附加属性并不重要。。。将它们放在
IconButton
中只是一个示例,可以用
IconMD
或一些
ButtonIcon
类或任何东西来替换。是的。在我的逻辑中,“IconButton、IconRepeatButton、IconToggleButton”都有需要设置的“图标(MD)”。在我看来,你的答案应该反映出你的逻辑——但我可能错了:)。无论如何,我接受了,因为它比实际提出相同方法的另一个答案更容易理解。尽管这有点难理解,但这正是我想要的,但我正在定义IconMD类中的附加属性。如果愿意,您可以这样做。但是您仍然可以在任何UIElement上设置它们。它们是在哪个类中定义的并不重要。尽管这有点难以理解,但这正是我想要的,但我正在定义IconMD类中的附加属性。如果愿意,您可以这样做。但是您仍然可以在任何UIElement上设置它们。它们在哪个类中定义并不重要。
<imCC:IconButton xmlns:local="clr-namespace:WpfApplication1"
    local:AttachedProperties.IconName="mdi-account-card-details" />
<imCC:IconButton
    imCC:IconButton.IconName="mdi-account-card-details"
    ...
<local:IconMD
    x:Name="_ButtonIcon"
    IconName="{Binding Path=(local:IconButton.IconName),RelativeSource={RelativeSource TemplatedParent}}"
    ...