gpt4 book ai didi

C# XAML 数据绑定(bind)在属性更改时无效

转载 作者:太空宇宙 更新时间:2023-11-03 23:29:45 25 4
gpt4 key购买 nike

好吧,我一直在为这个问题绞尽脑汁,我错过了一些东西,我就是想不通是什么。最终,我试图设置数据绑定(bind),以便我可以更新要即时显示的值,但就我的生活而言,它不起作用。

XAML 是:

<TextBox x:Name="textBox" HorizontalAlignment="Left" 
Height="37" Margin="85,38,0,0" TextWrapping="Wrap"
Text="{Binding Path=TBBind}" VerticalAlignment="Top"
Width="121" />

请注意,我设置了 {Binding Path=TBBind}

后面的代码是:

using System.ComponentModel;
using System.Windows;

namespace Databinding_Practice_2
{
/// <summary>
/// Interaction logic for MainWindow.xaml
/// </summary>
public partial class MainWindow : Window, INotifyPropertyChanged
{
public MainWindow()
{
InitializeComponent();
TBBind = "test";
}

private string _tBBind;

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

}

public event PropertyChangedEventHandler PropertyChanged;

private void OnPropertyChanged(string property)
{
MessageBox.Show("OnPropertyChanged triggered");
if (PropertyChanged != null)
{
PropertyChanged(this, new PropertyChangedEventArgs(property));
}
}
}
}

帮我 obi-w....哦等等,任何人都帮帮我!

最佳答案

假设您正在尝试使用 MVVM 模式(代表模型- View - View 模型):

你的主窗口就是 View 。

您应该创建另一个类作为 View 模型,如下所示:

public class MainWindowViewModel : INotifyPropertyChanged
{
public MainWindowViewModel()
{
TBBind = "test";
}

private string _tBBind;

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

}

public event PropertyChangedEventHandler PropertyChanged;

private void OnPropertyChanged(string property)
{
MessageBox.Show("OnPropertyChanged triggered");
if (PropertyChanged != null)
{
PropertyChanged(this, new PropertyChangedEventArgs(property));
}
}
}

在移除 MainWindowViewModel 类中所有与 ViewModel 相关的内容后,您的 MainWindow 代码将变成这样:

public partial class MainWindow : Window
{

public MainWindow()
{
InitializeComponent();
}

}

现在,您应该将 View 与 ViewModel 链接起来,有很多方法可以做到这一点。这是其中之一:

在 MainWindow 的 XAML 中,Window 元素中包含以下内容:

<Window.DataContext>
<wpfApplication5:MainWindowViewModel />
</Window.DataContext>

<Grid>
<TextBox x:Name="textBox" HorizontalAlignment="Left" Height="37" Margin="85,38,0,0" TextWrapping="Wrap" Text="{Binding TBBind}" VerticalAlignment="Top" Width="121" />
</Grid>

请注意,WpfApplication5 是我的 WPF 项目中命名空间的名称。这在您的情况下可能会有所不同。

关于C# XAML 数据绑定(bind)在属性更改时无效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32727918/

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