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

C# 在XAML中为用户控件设置属性,c#,.net,wpf,C#,.net,Wpf,我有一个用户控件,它的属性类型为Integer,我试图在XAML模板中将其设置为bindingsource中的属性。 如果我使用硬编码整数设置属性,即 <MyControl MyIntegerProperty="3" /> 这很好,但如果我尝试 <MyControl MyIntegerProperty="{Binding MyDataContextIntegerProperty}" /> 它失败了 我知道MyDataContext上的integer属性正在返回

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

<MyControl MyIntegerProperty="3" />

这很好,但如果我尝试

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

它失败了

我知道MyDataContext上的integer属性正在返回一个有效的整数,并且我知道这种格式可以工作,因为在模板的正上方,我有一行

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

这是正确的

是否需要在我的User Controls Integer属性上设置任何标志以允许此操作?还是我做错了什么


谢谢

MyIntegerProperty需要是可绑定的

以下是一个例子:

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

您需要将
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); }
    }
}
公共类MyControl:UserControl
{   
公共静态只读从属属性MyIntegerProperty=
Register(“MyInteger”、typeof(Integer)、typeof(MyControl));
公共整型整数
{
获取{return(int)GetValue(MyIntegerProperty);}
set{SetValue(MyIntegerProperty,value);}
}
}

您的财产是否与财产相关?嗨@Yurec,不,不是,我从下面的回答中猜测它需要。干杯