gpt4 book ai didi

WPF 简单绑定(bind)到 INotifyPropertyChanged 对象

转载 作者:行者123 更新时间:2023-12-04 15:23:37 25 4
gpt4 key购买 nike

我创建了最简单的绑定(bind)。绑定(bind)到后面代码中的对象的文本框。

事件虽然 - 文本框仍然是空的。

设置了窗口的 DataContext,并且存在绑定(bind)路径。

你能说有什么问题吗?

XAML

<Window x:Class="Anecdotes.SimpleBinding"
x:Name="MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="SimpleBinding" Height="300" Width="300" DataContext="MainWindow">
<Grid>
<TextBox Text="{Binding Path=BookName, ElementName=TheBook}" />
</Grid>
</Window>

背后的代码
   public partial class SimpleBinding : Window
{
public Book TheBook;

public SimpleBinding()
{
TheBook = new Book() { BookName = "The Mythical Man Month" };
InitializeComponent();
}
}

图书对象
public class Book : INotifyPropertyChanged
{
public event PropertyChangedEventHandler PropertyChanged;

protected void OnPropertyChanged(string name)
{
if (PropertyChanged != null)
{
PropertyChanged(this, new PropertyChangedEventArgs(name));
}

}

private string bookName;

public string BookName
{
get { return bookName; }
set
{
if (bookName != value)
{
bookName = value;
OnPropertyChanged("BookName");
}
}
}
}

最佳答案

首先删除DataContext="MainWindow"因为这集DataContextWindowstring MainWindow,然后指定 ElementName用于将绑定(bind)源定义为另一个控件的绑定(bind) x:Name="TheBook"在您的 Window 中不存在.您可以通过删除 ElementName=TheBook 使您的代码工作。从您的绑定(bind)或通过分配 DataContext ,如果未指定,则为默认源,WindowTheBook

public SimpleBinding()
{
...
this.DataContext = TheBook;
}

或通过指定 RelativeSource绑定(bind)到 Window这暴露了 TheBook :
<TextBox Text="{Binding RelativeSource={RelativeSource AncestorType={x:Type Window}}, Path=TheBook.BookName}"/>

但由于您无法绑定(bind)到字段,您需要转换 TheBook进入属性(property):
public partial class SimpleBinding : Window
{
public Book TheBook { get; set; }
...
}

关于WPF 简单绑定(bind)到 INotifyPropertyChanged 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17967052/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com