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

我可以绑定到实用类吗?Share

时间:2023-04-10 11:20:38 C#

我可以绑定到实用类吗?我有一个公共类,其中填充了以下通用函数来解析文本框:如果(textBox!=null)textBox.Text+=Convert.ToChar(CultureInfo.CurrentCulture.NumberFormat.CurrencyDecimalSeparator);}else{e.Handled=(e.Key>=Key.D0&&e.Key=Key.NumPad0&&e.Key<=Key.NumPad9)||e.Key==Key.Back||e.Key==Key.Delete||e.Key==Key.Left||e.Key==Key.Right||e.Key==Key.Unknown;我想我可以在页面的任何地方使用它作为TextBox按键事件的单一来源。在WP8中实现MVVM的新手,好奇是否有办法实现这一点?本着MVVM的精神(虽然我不是纯粹主义者),我理解它不需要专门在视图模型中,但我仍然喜欢它集中。快速说明:您需要附加行为。公共静态类TextBoxBehavior{publicstaticboolGetAllowOnlyDecimalInput(TextBoxtexbox){return(bool)texbox.GetValue(AllowOnlyDecimalInputProperty);}publicstaticvoidSetAllowOnlyDecimalInput(TextBoxtexbox,boolvalue){texbox.SetValue(AllowOnlyDecimalInputProperty,value);}publicstaticreadonlyDependencyPropertyAllowOnlyDecimalInputProperty=DependencyProperty.RegisterAttached("AllowOnlyDecimalInput",typeof(bool),typeof(TextBox),newPropertyMetadata(false,OnAllowOnlyDecimalInputChanged));staticvoidOnAllowOnlyDecimalInputChanged(DependencyObjectdepObj,DependencyPropertyChangedEventArgse){TextBoxitem=depObjasTextBox;如果(项目==空)返回;如果(e.NewValue是bool==false)返回;如果((bool)e.NewValue)item.KeyDown+=OnTextBoxDoubleParse_KeyDown;elseitem.KeyDown-=OnTextBoxDoubleParse_KeyDown;}staticvoidOnTextBoxDoubleParse_KeyDown(objectsender,KeyEventArgse){if(!Object.ReferenceEquals(sender,e.OriginalSource))返回;TextBoxitem=e.OriginalSourceasTextBox;if(item!=null){if(e.Key==Key.Decimal){vartextBox=senderasTextBox;如果(textBox!=null)textBox.Text+=Convert.ToChar(CultureInfo.CurrentCulture.NumberFormat.CurrencyDecimalSeparator);}else{e.Handled=(e.Key>=Key.D0&&e.Key=Key.NumPad0&&e.KeyinXAML您还可以将其设置为WPF样式并使其可在所有或多个控件中重复使用,而不是每次手动添加属性分享的所有内容,如果对你有用,需要了解更多C#学习教程,希望大家多多关注---本文收集自网络,不代表正文位置,如涉及侵权,请点击维权联系管理员删除,如需转载请注明出处: