[英]C# WPF reference custom property value inside custom control xaml
我有自己的自定义控件,其自定义属性定义如下:
public partial class MyControl : UserControl
{
public CustomProperty X
{
get { return (CustomProperty) GetValue(XProperty); }
set { SetValue(XProperty, value); }
}
public static readonly DependencyProperty XProperty = DependencyProperty.Register(
"X", typeof (CustomProperty), typeof (MyControl), null);
public MyControl()
{
InitializeComponent();
}
}
假设我在XAML中这样设置X值:
<controls:MyControl X="{Binding CustomPropertyValue}" />
如果这样定义X,我如何在MyControl
XAML代码中访问X的值:
<UserControl>
<Button Content="<!--What to put here to access X?-->" />
</UserControl>
您要从其中将其绑定到UserControl的属性。 最简单的方法是使用“ ElementName”绑定方法(Visual Studio通常将这些名称命名为“ userControl”),因此您将得到以下结果:
<Button Content="{Binding MyProperty, ElementName=userControl}"/>
当我开始时,我永远不会记住这一点,但是如果您单击设计器中的小框并选择“创建数据绑定”,则可以通过一个不错的绑定向导:
您可以在其中选择控件中所有元素的属性。 这是一个使用ElementName绑定到名为“ Description”的属性的示例:
值得注意的是,我发现这通常需要在列表包含新的自定义依赖项属性之前进行构建。
这是一个很好的界面,用于探索如何以各种方式创建绑定。 您可能还可以使用“ FindAncestor”而不是“ ElementName”来执行此操作,最后得到类似以下内容的结果:
<Button Content="{Binding Description, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type local:MyCustomControlType}}}"/>
但是命名可能更容易,更有效。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.