C# DataGridTemplateColumn更新
我正在将一个旧控件修改为WPF。我需要制作一个显示报警列表的数据网格。datagrid的第一列是datagridtemplate列,其中包含一个标志图标和日期。当用户按下按钮时,报警被确认,标志图标必须消失。我使用的是MVVM模式 问题是我似乎无法更新datagridtemplate列中的标志。当我将确认状态从0更改为1时,报警已确认,标志不会消失。当我重新加载控件并再次从服务器获取警报时,该标志不会再次显示,表明其状态实际上已在服务器中更新。因此,不知何故,我的代码正在工作,但我的UI没有得到更新。我还试图以同样的方式更改报警的描述,该列确实得到了更新。MainViewModelBase实现INotifyPropertyChanged 景色 您在setter中设置了_ackStatus,但没有从AlarmEntryViewModel中的getter返回此字段的值。这样做:C# DataGridTemplateColumn更新,c#,wpf,datagrid,inotifypropertychanged,C#,Wpf,Datagrid,Inotifypropertychanged,我正在将一个旧控件修改为WPF。我需要制作一个显示报警列表的数据网格。datagrid的第一列是datagridtemplate列,其中包含一个标志图标和日期。当用户按下按钮时,报警被确认,标志图标必须消失。我使用的是MVVM模式 问题是我似乎无法更新datagridtemplate列中的标志。当我将确认状态从0更改为1时,报警已确认,标志不会消失。当我重新加载控件并再次从服务器获取警报时,该标志不会再次显示,表明其状态实际上已在服务器中更新。因此,不知何故,我的代码正在工作,但我的UI没有得到
private bool _ackStatus;
public bool AckStatus
{
get
{
return _ackStatus;
}
set
{
_ackStatus = value;
RaisePropertyChanged(() => AckStatus);
}
}
或在setter中设置_model.AcknStatus字段:
private bool _ackStatus;
public bool AckStatus
{
get
{
if (_model.AcknStatus == 0)
return false;
else
return true;
}
set
{
_ackStatus = value;
_model.AcknStatus = value ? 1 : 0;
RaisePropertyChanged(() => AckStatus);
}
}
public class AlarmEntryViewModel : MainViewModelBase
{
#region Fields
private readonly IViewManager _viewManager;
private readonly IDockManager _dockManager;
private string _description;
#endregion
#region Constructor
public AlarmEntryViewModel()
{
}
#endregion
#region Model & Proxy
private Alarm _model;
public Alarm Model
{
set { _model = value; }
}
public AlarmListServiceProxy Proxy { get; set; }
#endregion
#region Properties
public DateTime Time { get { return _model.Time; } }
public string DateTimeString { get { return _model.Time.ToString("dd/MM/yyyy hh:mm:ss"); } }
public int Severity { get { return _model.Severity; } }
public string SeverityString
{
get
{
if (_model.Severity == 0)
return "Melding";
if (_model.Severity == 1)
return "Waarschuwing";
if (_model.Severity == 2)
return "Fout";
else
return "Niet gekend";
}
}
public string Description
{
get
{
//string substring = _model.Description.Substring(_model.Description.Length - 1);
//if ( substring.Equals("\n"))
//{
// return _model.Description.Substring(0, _model.Description.Length - 1);
//}
//else
// return _model.Description;
return _description;
}
set
{
_description = value;
RaisePropertyChanged(() => Description);
}
}
public int AlarmNumber { get { return _model.Number; } }
public int AcknStatus { get { return _model.AcknStatus; } }
private bool _ackStatus;
public bool AckStatus
{
get
{
if (_model.AcknStatus == 0)
return false;
else
return true;
}
set
{
_ackStatus = value;
RaisePropertyChanged(() => AckStatus);
}
}
#endregion
}
private bool _ackStatus;
public bool AckStatus
{
get
{
return _ackStatus;
}
set
{
_ackStatus = value;
RaisePropertyChanged(() => AckStatus);
}
}
private bool _ackStatus;
public bool AckStatus
{
get
{
if (_model.AcknStatus == 0)
return false;
else
return true;
}
set
{
_ackStatus = value;
_model.AcknStatus = value ? 1 : 0;
RaisePropertyChanged(() => AckStatus);
}
}