我有一个日期时间数据库字段。在我的应用程序中,我有两个文本框绑定到该字段。
一个具有字符串格式:date,而另一个具有格式:time。问题是只有当用户更新日期或时间时,其他文本框(日期或时间)才会重置。
我也尝试使用wpf工具包,但我发现很难进行现场更新。
<TextBox Name="txtDate" Text="{Binding Documenti,
StringFormat=\{0:d\}}" />
<TextBox Name="txtTime" Text="{Binding Documenti,
StringFormat=\{0:hh:mm\}}"/>-->
答案 0 :(得分:1)
您必须将属性分开才能在setter中应用自定义逻辑,其中更改的部分与未更改的部分合并。
的DataContext
public class MyViewModel : INotifyPropertyChanged
{
private DateTime _Documenti;
public DateTime Documenti
{
get { return _Documenti; }
set
{
if (_Documenti != value)
{
_Documenti = value;
RaisePropertyChanged("Documenti");
RaisePropertyChanged("DatePart");
RaisePropertyChanged("TimePart");
}
}
}
public DateTime DatePart
{
get { return Documenti; }
set
{
Documenti = new DateTime(value.Year, value.Month, value.Day, Documenti.Hour, Documenti.Minute, Documenti.Second);
}
}
public DateTime TimePart
{
get { return Documenti; }
set
{
Documenti = new DateTime(Documenti.Year, Documenti.Month, Documenti.Day, value.Hour, value.Minute, value.Second);
}
}
public event PropertyChangedEventHandler PropertyChanged;
protected virtual void RaisePropertyChanged(string prop)
{
var handler = PropertyChanged;
if (handler != null) handler(this, new PropertyChangedEventArgs(prop));
}
}
XAML
<TextBox Name="txtDate" Text="{Binding DatePart,
StringFormat=\{0:d\}}" />
<TextBox Name="txtTime" Text="{Binding TimePart,
StringFormat=\{0:hh:mm\}}" />