【问题标题】:Setting a property in XAML for a User Control在 XAML 中为用户控件设置属性
【发布时间】:2010-05-12 08:51:46
【问题描述】:

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

<MyControl MyIntegerProperty="3" />

这很好,但如果我尝试

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

失败了。

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

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

正常工作。

我需要在我的 User Controls Integer 属性上设置任何标志以使其正常工作吗?还是我做错了什么?

谢谢

【问题讨论】:

  • 你的属性是 DependencyProperty 吗?
  • 嗨@Yurec,不,不是,我从下面的回复中猜测它需要。干杯

标签: c# .net wpf


【解决方案1】:

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

【讨论】:

    【解决方案2】:

    您需要将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); }
        }
    }
    

    【讨论】:

      猜你喜欢
      • 2011-03-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-12-02
      • 2014-12-12
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多