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}}"
...