我有一个问题,如果有人可以帮助我解决问题,那就是. 我有一个用户控件,它是圆形文本框",仅由一个文本框组成, 我确实写了几行代码来绑定此用户控件,但是它起作用了,但是如果我更改source属性,则以一种方式将舍入的文本框显示为修改,如果我从文本框中更改,则更改不会出现在属性限制内; 圆形文本框后面的代码是:
Hi, I have a problem if any one can help me to solve it, the problem is. i have a user control it is Rounded Text Box,composed from one text box only, i did write some line of code to can bind this user control,it is worked but in one way if i change the source property the rounded text box show the modification by if i change from the text box the change do not appear in property bounded; the code behind of rounded text box is :
public partial class UCRTextBox : UserControl { public static readonly DependencyProperty TextProperty = DependencyProperty.Register ("Text",typeof(string),typof(UCRTextBox), new FrameworkPropertyMetadata (null,FrameworkMetadataOptions.BindsTwoWayByDefault, new PropertyChangedCallBach(textChangedCallBack), new CoerceValueCallback(coerceValue))); public string Text { get{return (string)GetValue(TextProperty);} set{SetValue(TextProperty,value);} } static void textChangedCallBack(DependencyObject property,DependencyPropertyChangedEventsArgs args) { UCRTextBox ucRounded=(UCRTextBox)property; ucRounded.TextBx.text=(string)args.NewValue; } static object CoerceValue(DependencyObject sender,object value) { return (string)value; } }我在窗口中的代码确实使用了此控件,但确实通过后面的代码将其绑定了:
and the code in the window with i did use this control i did bind it by code behind:
private void SetTextBoxBinding(FrameworkElement target,DependencyProperty dp,string value) { Binding b=new Binding(value); b.source=_editPatient.Patient; b.Mode=BindingMode.TwoWay; target.SetBinding(dp,binding); }用于此功能的是: 在窗口上加载事件
Using for this function is : on the windowLoad Events
this.SetTextbinding(this.txtFirstName,TextBox.TextProperty,"FirstName");就这些 . 任何人都可以向我展示解决此问题的正确方法吗? 和表示所有
that is all . can any one show me the correct way to solve this problem?? and thx for all
推荐答案
为什么不从XAML设置Binding?
在UserControl的XAML中,可以将TextBox的Text属性绑定到UserControl的Text属性,如下所示:
In your UserControl''s XAML you can bind the Text property of the TextBox to the Text property of the UserControl, like the following:
<TextBox x:Name="TextBx" Text="{Binding Text, Mode=TwoWay, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type UserControl}}}" />在使用UserControl的窗口中,您可以绑定UserControl的Text属性,如下所示:
In the window that uses the UserControl you can bind the Text property of the UserControl, like the following:
<ucNamespace:UCRTextBox x:Name="TextBx" Text="{Binding MyProperty, Mode=TwoWay}" />别忘了设置 DataContext 适当的窗口. :)
Don''t forget to set the DataContext of the window appropriately. :)
更多推荐
WPF中的用户控件绑定
发布评论