我有以下UserControl
<UserControl
x:Class="MyUserControl"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
mc:Ignorable="d">
<Grid>
<Label Content="Label"
Name="myLabel" />
</Grid>
</UserControl>
我需要:
1)公开FontFamily
的{{1}}属性,因为它是myLabel
的属性。
2)*(真的可选)定义myLabel内容为“MyUserControl1”,“MyUserControl2”等,就像设计者在添加多个控件时所做的那样。
我应该如何公开那个属性,比如序数属性(?)或依赖属性(?)......
答案 0 :(得分:0)
将它们公开为依赖项属性,实际上控件上的每个属性都应该作为依赖项属性公开。然后,您可以使用绑定将属性附加到Label.FontFamily
属性:
public void MyUserControl()
{
myLabel.SetBinding(Label.FontFamilyProperty, new Binding {
Path = "FontFamily",
Source = this,
});
}
FontFamily
setter中的Path
是您的媒体资源的名称。
P.S。:没有真正得到你的第二个问题。你能改写它还是提供一些样品?
答案 1 :(得分:0)
FontFamily在Control上声明,它是UserControl和Label的基础,是继承的DependencyProperty。因此,除非您覆盖Label上的FontFamily值(本地值,样式,触发器等),否则您已经可以在UserControl上设置FontFamily并使其显示在Label上而不执行任何其他操作。如果您需要在内部对其进行修改并将其推出以显示在UserControl上,则需要将UserControl的FontFamily绑定到Label,并使用Mode = TwoWay。
对于第二部分 - 您需要设置一些计数机制,该机制在创建实例时递增,可能作为控件内的静态字段。然后,您可以递增该值并将其应用于UserControl构造函数中的Label(这将取决于在每个会话期间在运行时加载顺序和变量)。