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

BindingaUserControltoitsowndependencyPropertydoesn'twork分享

时间:2023-04-11 02:57:24 C#

BindingaUserControltoitsowndependencyPropertydoesn'twork使用自定义对象属性的用户控件。尝试用代码解释我的意思。自定义对象:publicclassMyObj{publicstringText{get;放;}publicMyObj(stringtext){Text=text;}}用户控件背后的代码://////MyControl.xaml的交互逻辑///publicpartialclassMyControl:UserControl{publicstaticreadonlyDependencyPropertyObjectProperty=DependencyProperty.Register("Object",typeof(MyObj),typeof(MyControl),newPropertyMetadata(默认(MyObj)));publicMyObjObject{get{return(MyObj)GetValue(ObjectProperty);}set{SetValue(ObjectProperty,value);}}publicMyControl(){InitializeComponent();}}UserControlXAML:所以我希望MyControl显示一个TextBlock,其中包含MyObj.Text中的任何字符串;如果我在代码中添加控件,没有任何绑定,那么这工作正常,例如MyControlmyControl=newMyControl(){Object=newMyObj("HelloWorld!")};grid.Children.Add(myControl);但是如果我尝试使用数据绑定,则不会显示任何内容,这是MainWindow的代码。代码隐藏:publicpartialclassMainWindow:Window,INotifyPropertyChanged{privateMyObj_Object;publicMyObjObject{get{return_Object;}设置{_Object=值;OnPropertyChanged("对象");}}publicMainWindow(){InitializeComponent();Object=newMyObj("你好");}公共事件PropertyChangedEventHandlerPropertyChanged;[NotifyPropertyChangedInvocator]protectedvirtualvoidOnPropertyChanged([CallerMemberName]stringpropertyName=null){PropertyChangedEventHandlerhandler=PropertyChanged);PropertyChangedEventArgs(propertyName));XAML:谁能给我指出正确的方向,我想这与在UserControl上使用相对源绑定有关,但我不确定。谢谢我个人从未在UserControl上使用过相对自绑定,所以我不确定它是否有效。您可以尝试设置UserControl的x:Name,并在绑定中使用它。请注意,如果数据绑定在运行时无法绑定,您还应该在“输出”窗口中看到相关的错误消息。已经很久了..但是因为有一种新技术我想在这里发布。编译时绑定:这是Windows10引入的一种新型绑定。此绑定具有经典绑定的许多性能优势。您不必为页面设置任何DataContext或通过额外的奖励来控制自身,您可以绑定到页面或控件中任何内容的DataContext但这是否像您想象的那样完美......不!不是你猜的那样。并且有一个答案。默认情况下,编译时绑定设置为OneTime而不是OneWay的经典绑定。因此,您需要显式地将模式设置为OneWay以确保始终更新该值。以上是C#学习教程:BindingUserControltoyourowndependencyPropertydoesnotwork.分享的所有内容,如果对你有用,需要了解更多C#学习教程,希望大家多多关注——有权联系管理员删除。如需转载请注明出处: