C# WPF文本框绑定到多个源
对WPF来说比较新,所以如果我遗漏了一些明显的东西,请容忍我。我正在窗口底部创建一个描述应用程序状态的“摘要”文本框。我要绑定到的属性的代码如下所示:C# WPF文本框绑定到多个源,c#,wpf,binding,C#,Wpf,Binding,对WPF来说比较新,所以如果我遗漏了一些明显的东西,请容忍我。我正在窗口底部创建一个描述应用程序状态的“摘要”文本框。我要绑定到的属性的代码如下所示: public String WindowDescription { get { return (radioButton.IsChecked == true ? "A " : "B ") + NameTextBox.Text + " " + (cbRoute.SelectedItem != null? comboBox.SelectedIt
public String WindowDescription
{
get { return (radioButton.IsChecked == true ? "A " : "B ") + NameTextBox.Text
+ " " + (cbRoute.SelectedItem != null? comboBox.SelectedItem.ToString() : ""); }
}
我将它绑定到控件上,如下所示:
<TextBox IsEnabled="False" Text="{Binding Path=WindowDescription}"/>
绑定现在根本不起作用-WindowDescription中引用的每个控件都有一些默认值,但即使这些值也不会填充文本框。正如我所说,我是WPF新手,所以请随意指出我的示例中缺少的任何内容,无论它看起来有多么明显。谢谢。如果非要我猜的话,我猜你没有设置文本框的DataContext(或者直接设置,或者为它的父母提供一个)
绑定路径是相对于元素DataContext的,默认DataContext为null(而不是元素本身或其包含窗口)。如果我不得不猜测,我猜您没有设置文本框的DataContext(直接设置,或者通过在某处为其父代提供)
绑定路径是相对于元素DataContext的,默认DataContext为null(而不是元素本身或其包含窗口)。有几件事。首先,确保将DataContext设置为包含WindowDescription属性的类的实例 人们通常会在页面的代码隐藏中设置这一点。它也可以用XAML设置,但我不会让我的答案复杂化 其次,数据绑定不会自动看到属性值的更改。需要在具有WindowDescription属性的类中设置通知系统 谷歌“INotifyPropertyChanged”与Bing和see 否则,请查看此视频
卢克有几件事。首先,确保将DataContext设置为包含WindowDescription属性的类的实例 人们通常会在页面的代码隐藏中设置这一点。它也可以用XAML设置,但我不会让我的答案复杂化 其次,数据绑定不会自动看到属性值的更改。需要在具有WindowDescription属性的类中设置通知系统 谷歌“INotifyPropertyChanged”与Bing和see 否则,请查看此视频
卢克我猜延斯是对的,你设定了模型吗?i、 e
this.DataContext = model;
在我工作的例子中,我们使用的是ViewModel和MVVM模式。从长远来看,您可能会研究Prism和Unity之类的东西,但如果您只是将所有代码放在XAML页面的.cs文件中,这里就是一个例子
namespace DataContextTest
{
公共部分类主窗口:窗口
{
公共主窗口()
{
this.DataContext=this;
MyString=“你好……”;
初始化组件();
}
}
}
然后在XAML中绑定到MyString,就像您在另一篇文章中所做的那样,当然,它也应该可以工作——此时没有更改通知。如果你愿意的话,我可以发布一个例子,但我认为你可以在谷歌上看到很多简单的例子
希望这是有帮助的 我猜Jens是对的,你设定了模型吗?i、 e
this.DataContext = model;
在我工作的例子中,我们使用的是ViewModel和MVVM模式。从长远来看,您可能会研究Prism和Unity之类的东西,但如果您只是将所有代码放在XAML页面的.cs文件中,这里就是一个例子
namespace DataContextTest
{
公共部分类主窗口:窗口
{
公共主窗口()
{
this.DataContext=this;
MyString=“你好……”;
初始化组件();
}
}
}
然后在XAML中绑定到MyString,就像您在另一篇文章中所做的那样,当然,它也应该可以工作——此时没有更改通知。如果你愿意的话,我可以发布一个例子,但我认为你可以在谷歌上看到很多简单的例子
希望这是有帮助的 查看yor应用程序的调试输出。是否存在绑定错误?请查看yor应用程序的调试输出。是否存在绑定错误?这是找到解决方案的关键。最后,我创建了一个私有类,该类将属性绑定到每个控件,并在每个属性的setter中设置“this.Summary=getSummary()”生成字符串,然后将其放置在.Summary中,其setter创建了NotifyPropertyChangedEvent,从而在每次更改控件时更新文本框。谢谢这是找到解决方案的关键。最后,我创建了一个私有类,该类将属性绑定到每个控件,并在每个属性的setter中设置“this.Summary=getSummary()”生成字符串,然后将其放置在.Summary中,其setter创建了NotifyPropertyChangedEvent,从而在每次更改控件时更新文本框。谢谢