使我的Usercontrol的属性可绑定

时间:2011-06-07 12:23:18

标签: silverlight

我创建了一个自定义用户控件,我在我的主xaml控件上使用:

<Controls:CustomControl  Width="200" Height="20" 
TotalCount="{Binding TotalRecordCount}" SuccessCount="{Binding ValidationCount}" ErrorCount="{Binding ValidationErrorCount}" Margin="0,5,0,0"  HorizontalAlignment="Left"> 
</Controls:CustomControl>

我想让我的自定义用户控件的私有变量是ErrorCount,SuccessCount和总计数(类型为int32)Bindable所以我可以将值绑定到它们。现在,当我尝试将其绑定到我的项目源时,它会给出以下错误e异常消息是“类型为'System.Windows.Data.Binding'的对象'无法转换为'System.Int32'类型

非常感谢, 米歇尔

2 个答案:

答案 0 :(得分:6)

您需要使用DependencyProperty实现属性,不要使用私有变量来保存这些值。这是一个例子: -

    #region public int SuccessCount

    public int SuccessCount
    {
        get { return (int)GetValue(SuccessCountProperty); }
        set { SetValue(SuccessCountProperty, value); }
    }

    public static readonly DependencyProperty SuccessCountProperty =
        DependencyProperty.Register(
            "SuccessCount",
            typeof(int),
            typeof(CustomControl),
            new PropertyMetadata(0, OnSuccessCountPropertyChanged));

    private static void OnSuccessCountPropertyChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
    {
        CustomControl source = d as CustomControl;
        int value = (int)e.NewValue;

        // Do stuff when new value is assigned.
    }
    #endregion public int SuccessCount

答案 1 :(得分:0)

为了使属性为“Bindable”,意味着您可以使用DataBinding设置它,该属性必须是Dependency Property。有关依赖属性的更多信息,请查看this MSDN article

希望这有助于:)