在XAML中为用户控件设置属性

时间:2010-05-12 08:51:47

标签: c# .net wpf

我有一个具有Integer类型属性的用户控件,我试图在XAML模板中设置为bindingsource中属性的属性。 如果我使用硬编码整数设置属性,即

<MyControl MyIntegerProperty="3" />

这很好,但如果我尝试

<MyControl MyIntegerProperty="{Binding MyDataContextIntegerProperty}" />

失败了。

我知道MyDataContext上的整数属性返回一个有效的整数,我知道这种格式有效,就像在模板的正上方一样,我有一行

 <TextBlock Text="{Binding MyDataContextStringProperty}" />

正常工作。

我是否需要在User Control Integer属性上设置任何标志才能使其正常工作?或者我做错了什么?

由于

2 个答案:

答案 0 :(得分:2)

MyIntegerProperty需要Dependency Property才能绑定...

以下是一个例子:

public static readonly DependencyProperty MyIntegerProperty = 
    DependencyProperty.Register("MyInteger", typeof(Integer), typeof(MyControl));

public int MyInteger
{
    get { return (int)GetValue(MyIntegerProperty); }
    set { SetValue(MyIntegerProperty, value); }
}

MyControl的XAML定义将变为:

<MyControl MyInteger="{Binding MyDataContextIntegerProperty}" />

答案 1 :(得分:0)

您需要将MyIntegerProperty定义为依赖项属性。您可以这样定义:

public class MyControl : UserControl 
{   
    public static readonly DependencyProperty MyIntegerProperty = 
             DependencyProperty.Register("MyInteger", typeof(Integer),typeof(MyControl), <MetaData>);

    public int MyInteger
    {
        get { return (int)GetValue(MyIntegerProperty); }
        set { SetValue(MyIntegerProperty, value); }
    }
}