我创建了一个自定义用户控件,我在我的主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'类型
非常感谢, 米歇尔
答案 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。
希望这有助于:)