在使用wpf数据绑定之前,我已成功绑定窗口项以查看模型,几乎与我在这里完全相同。
我有一个带有XAML的GUI用于我的TextBlock绑定,可以用系统状态更改颜色和文本;
<TextBlock
HorizontalAlignment="Left" Margin="200,359,0,0" TextWrapping="Wrap"
Text="{Binding Path=StateText, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"
VerticalAlignment="Top" Width="565" Height="84"
Background="{Binding Path=StateColour, Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}"/>
我在我的xaml.cs中将datacontext设置为我的视图模型;
MobilityWelcomeViewModel mobilityWelcomeViewModel = new mobilityWelcomeViewModel();
public MobilityWelcome()
{
InitializeComponent();
this.DataContext = this.mobilityWelcomeViewModel;
}
我有这个构造函数,它通过指定的适配器写入我的数据模型;
public class MobilityWelcomeViewModel
{
private bool State;
private string _Text;
private Brush _StateColour;
BackgroundWorker StateWorker = new BackgroundWorker();
}
public ShellEMobilityWelcomeViewModel()
{
this._ANMStateColour = Brushes.White;
this.ANMStateWorker.DoWork += this.ANMStateWorker_DoWork;
this.ANMStateWorker.RunWorkerCompleted += this.ANMStateWorker_RunWorkerCompleted;
this.ANMStateWorker.RunWorkerAsync();
this._ANMText = "Loading ANM State";
IApplicationPointAdapter testWrite = AdapterFactory.Instance.GetApplicationPointAdapter();
testWrite.WriteBinary("HMI.EV.SITE1.STATUS.CONTACTBREAKEROPEN", false);
}
在我的视图模型中,我有属性;
public Brush StateColour
{
get { return this._StateColour; }
set { this._StateColour = value; }
}
public string StateText
{
get { return this._Text; }
set { }
}
我有后台工作人员,我可以看到在调试中更改这些值。
我真的很难过。整个绑定的东西在表面看起来很简单,所以从我相当新的,可能是天真的,对它的了解,我看不出我做错了什么。
提前致谢。 (我也改变了变量名来伪装我的项目,所以如果在类似对象之间存在拼写错误,或者同样只是忽略它)
答案 0 :(得分:0)
我认为您正在设置datacontext但未在正确的位置初始化ViewModel。
要仔细检查,你可以使用像Snoop这样的工具来查看出错的地方。
您应该在构造函数中初始化ViewModel
如下。
public MobilityWelcome()
{
InitializeComponent();
mobilityWelcomeViewModel = new mobilityWelcomeViewModel();
this.DataContext = this.mobilityWelcomeViewModel;
}
还要确保您正在实施INotificationPropertyChanged。
您的财产制定者应如下所示
public Brush StateColour
{
get { return this._StateColour; }
set { this._StateColour = value;
OnPropertyChanged("StateColour");
}
}