文本框没有正确绑定
本文关键字:绑定 文本 | 更新日期: 2023-09-27 18:17:09
我有一堆textboxes
我试图绑定到我的视图模型中的字符串。我以为一切都设置正确了,但是文本框里什么也没有出现。
这是我的XAML和一个我想绑定的文本框。
<Window x:Class="Server.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:i="clr-namespace:System.Windows.Interactivity;assembly=System.Windows.Interactivity"
xmlns:l="clr-namespace:Server"
xmlns:viewmodel="clr-namespace:Server.ViewModels"
Title="MainWindow">
<Window.DataContext>
<viewmodel:MainWindowViewModel />
</Window.DataContext>
<TextBlock Name="ShipLatTB"
FontSize="17"
Text="{Binding Path=CurrentShipLat, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" />
这是视图模型:
namespace Server.ViewModels
{
class MainWindowViewModel : INotifyPropertyChanged
{
public event PropertyChangedEventHandler PropertyChanged;
private string _currentShipLat;
public string CurrentShipLat
{
get { return _currentShipLat; }
set { _currentShipLat = value; OnPropertyChanged("CurrentShipLat"); }
}
// Create the OnPropertyChanged method to raise the event
protected void OnPropertyChanged(string name)
{
PropertyChangedEventHandler handler = PropertyChanged;
if (handler != null)
{
handler(this, new PropertyChangedEventArgs(name));
}
}
}
我测试,以确保数据实际上是在'_currentShipLat'通过设置它等于"测试"在一个命令,并调试以验证它。不确定还有什么问题?
注意:这个文本框应该能够动态更新。
编辑:给一个不赞成的理由和投票结束怎么样?这对谁都没用。
确保在初始化WPF窗口之前设置了_currentShipLat字段。
如果你在窗口初始化之后这样做,WPF将永远不会"看到"这个变化,因为它不会触发属性改变事件。要么确保在窗口初始化之前设置该字段,要么使用属性的setter而不是直接设置该字段。