Joh*_*gel 2 data-binding dependencyobject silverlight-4.0
我很抱歉,因为这太简单了,我知道问题已经得到解答,但在大约 30 页的内容中,我还没有找到我想要解决的问题。
我还没有很好地练习 SL,并尝试编写一个简单版本的文本框,该文本框绑定到屏幕内的属性并在文本更改时更新它,反之亦然(属性更改传播到文本)。由于一些原因,我需要在代码隐藏中使用 DependencyProperties 来执行此操作,而不是在 XAML 中使用 INotifyPropertyChanged。
我最近的尝试看起来像这样:
public partial class MainPage : UserControl
{
static MainPage()
{
TargetTextProperty = DependencyProperty.Register("TargetText", typeof(string), typeof(MainPage), new PropertyMetadata(new PropertyChangedCallback(TextChanged)));
}
public readonly static DependencyProperty TargetTextProperty;
public string TargetText
{
get { return (string)GetValue(TargetTextProperty); }
set { SetValue(TargetTextProperty, value); }
}
public MainPage()
{
InitializeComponent();
TargetText = "testing";
textBox1.DataContext = TargetText;
Binding ResetBinding = new Binding("TargetText");
ResetBinding.Mode = BindingMode.TwoWay;
ResetBinding.Source = TargetText;
textBox1.SetBinding(TextBox.TextProperty, ResetBinding);
}
private static void TextChanged(DependencyObject sender, DependencyPropertyChangedEventArgs e)
{
MainPage pg = (MainPage)sender;
pg.textBox1.Text = e.NewValue as string;
}
}
Run Code Online (Sandbox Code Playgroud)
有人看到我错过了什么(痛苦的明显的事情吗?)?
谢谢,
约翰
以下内容应该足以设置您想要的绑定:
textBox1.SetBinding(TextBox.TextProperty, new Binding() { Path = "TargetText", Source = this });
Run Code Online (Sandbox Code Playgroud)
您的代码的问题在于您同时设置了Source和 绑定Path到TargetText属性,结果框架尝试绑定到TargetText.TargetText,这显然是错误的。
| 归档时间: |
|
| 查看次数: |
2889 次 |
| 最近记录: |