【问题标题】:Binding to change the property绑定更改属性
【发布时间】:2012-07-20 18:07:17
【问题描述】:

它是否可用或这不起作用:要更改 Text Box.Text 和要更改的属性,可以进行这种类型的绑定(我知道这可以通过 Text Box 中的事件进行,我正在寻找某种可以制作的绑定)? 我应该只在我的鳕鱼中使用 Text Box.Text 吗?

<TextBox Text="{Binding Path=NumeClient, Mode=TwoWay}" Height="23" HorizontalAlignment="Left" Margin="117,21,0,0" Name="textBox1" VerticalAlignment="Top" Width="249" />

public string NumeClient { get; set; }

【问题讨论】:

  • 需要额外解释吗?
  • 很不清楚你在这里问什么。 WPF 分为两层:UI 层和数据层。绑定用于将数据从数据层拉入 UI 层,例如将数据层中的 Name 字段放入 TextBox。大多数绑定默认设置为双向,这意味着如果您更改数据层或 UI 层,另一层中的值也会发生变化。
  • 如果我在 GUI 中写一些东西,属性不会改变
  • 您使用的是 MVVM 还是这段代码落后?
  • @user1103707 为了让属性完全参与到绑定系统中,该类应该实现INotifyPropertyChanged,并且属性本身应该在它们发生更改时发出属性更改通知。有关详细信息,请参阅 MSDN 的 How to: Implement the INotifyPropertyChanged Interface 文章

标签: c# wpf xaml binding


【解决方案1】:

如果我正确理解了这个问题,您是在问如何设置与 TextBox 的 Text 属性的双向绑定?

<TextBox Text="{Binding Path=YourProperty, Mode=TwoWay}" />

【讨论】:

  • 是的,如果我从 GUI 更改 TextBox.Text 以及要更改的属性,顺便说一句,我试过了,但它不起作用
  • “不起作用”是什么意思?这是基本的 WPF 功能。查看this answer
【解决方案2】:

这使您的属性都更改了 TextBox 并且 TextBox 更改了属性(来自 MSDN)
添加你的类构造器DataContext = this;

 public class Person : INotifyPropertyChanged
      {
          private string name;
          // Declare the event
          public event PropertyChangedEventHandler PropertyChanged;
          public string PersonName
          {
              get { return name; }
              set
              {
                  name = value;
                  // Call OnPropertyChanged whenever the property is updated
                  OnPropertyChanged("PersonName");
              }
          }

          // Create the OnPropertyChanged method to raise the event
          protected void OnPropertyChanged(string name)
          {
              PropertyChangedEventHandler handler = PropertyChanged;
              if (handler != null)
              {
                  handler(this, new PropertyChangedEventArgs(name));
              }
          }
      }

XAML:

<TextBox Text="{Binding Path=PersonName, Mode=TwoWay}" />

希望对你有帮助

【讨论】:

  • 它不起作用,顺便说一句,我在公共部分类 AddClient 中有属性:Window, INotifyPropertyChanged { 我看到你有一个单独的类,这是问题吗?
  • @user1103707 这工作如果您将视图上的DataContext设置为Person对象
猜你喜欢
  • 2017-06-27
  • 2016-03-28
  • 1970-01-01
  • 1970-01-01
  • 2013-09-05
  • 2021-09-01
  • 2015-09-18
  • 2019-03-24
  • 2011-08-10
相关资源
最近更新 更多