当前位置: 首页 > 编程语言 > C#

属性已由’FrameworkElement’注册分享

时间:2023-04-10 15:36:44 C#

C#学习教程:Propertyisalreadyregisteredby'FrameworkElement'VS11的“注册”错误。这是我的代码段成为第三个或参数typeof(FrameworkElement))。如果我将第三个参数设置为包含两个依赖属性的类,则错误消失,但我不能直接从xaml使用这些属性。我必须将所有权添加到使用它之前的每个依赖属性。实际上,它确实正确呈现,但只有当我第一次打开它时。它在第一次呈现后立即给我一个异常。在运行时,它似乎工作得很好。我做错了什么,有没有办法摆脱这个烦人的错误?---编辑-----这是我的自定义类(包括2个依赖属性):publicpartialclassEditableTextBox:UserControl{#regionDependencyPropertiespublicstaticreadonlyDependencyPropertyIsEditingNumberProperty=DependencyProperty.Register("IsEditingNumber",typeof(bool),typeof(FrameworkElement),newFrameworkPropertyMetadata(true,FrameworkPropertyMetadataOptions.AffectsRender));publicstaticreadonlyDependencyPropertyTextProperty=DependencyProperty.Register("Text",typeof(string),typeof(FrameworkElement),newFrameworkPropertyMetadata("0",FrameworkPropertyMetadataOptions.AffectsRender){CoerceValueCallback=newCoerceValueCallback((sender,value)=>{returnexpressionRestararaint.Match((string)value).Value;})});#endregionpublicstaticRegexexpressionRestararaint=newRegex("[-a-zA-z0-9+*.\(\)\[\]\{\}]*");publicstringText{get{(string)GetValue(TextProperty);}set{SetValue(TextProperty,value);tbxValue.Text=(字符串)GetValue(TextProperty);}}publicboolIsEditingNumber{get{return(bool)GetValue(IsEditingNumberProperty);}set{boolold=(bool)GetValue(IsEditingNumberProperty);if(old!=value){if(!value)stopEditing();否则开始编辑();SetValue(IsEditingNumberProperty,值);}}}。..在主类中使用:.xaml属性不会改变)publicpartialclassEditableTextBox:UserControl{#regionDependencyPropertiespublicstaticreadonlyDependencyPropertyIsEditingNumberProperty=DependencyProperty.Register("IsEditingNumber",typeof(bool),typeof(EditableTextBox),newFramedataworkPropertyMetadata(AffectsRender){PropertyChangedCallback=newPropertyChangedCallback((sender,arg)=>{EditableTextBoxed=senderasEditableTextBox;if(!(bool)arg.NewValue)ed.stopEditing();elseed.startEditing();}),});publicstaticreadonlyDependencyPropertyTextProperty=DependencyProperty.Register("Text",typeof(string),typeof(EditableTextBox),newFrameworkPropertyMetadata("0",FrameworkPropertyMetadataOptions.AffectsRender){PropertyChangedCallback=newPropertyChangedCallback((sender,arg)=>{EditableTextBoxed=senderasEditableTextBox;ed.tbxValue.Text=arg.NewValueasstring;}),CoerceValueCallback=newCoerceValueCallback((sender,value)=>{returnexpressionRestaraint.Match((string)value).Value;})});#endregionpublicstaticRegexexpressionRestaraint=newRegex("[-a-zA-z0-9+*.\(\)\[\]\{\}]*");publicstringText{get{return(string)GetValue(TextProperty);}set{SetValue(TextProperty,value);}}publicboolIsEditingNumber{get{return(bool)GetValue(IsEditingNumberProperty);}set{SetValue(IsEditingNumberProperty,value);DependencyProperty.Register方法的第三个参数ownerType必须是声明该属性的类如果你的类是MyClass,声明必须如下:以上是C#学习教程:属性已经被'FrameworkElement'注册共享。如果对大家有用,需要详细了解C#学习教程,希望大家多多指教Follow—publicclassMyClass:DependencyObject{publicstaticreadonlyDependencyPropertyIsEditingNumberProperty=DependencyProperty.Register("IsEditingNumber",typeof(bool),类型(我的类),...);//CLR包装器publicboolIsEditingNumber{get{return(bool)GetValue(IsEditingNumberProperty);}set{SetValue(IsEditingNumberProperty,value);}}}本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处: