C# 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

对WPF来说比较新,所以如果我遗漏了一些明显的东西,请容忍我。我正在窗口底部创建一个描述应用程序状态的“摘要”文本框。我要绑定到的属性的代码如下所示:

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,从而在每次更改控件时更新文本框。谢谢