【发布时间】:2015-11-04 16:41:55
【问题描述】:
我有一个模型,我收到一个名为birth 的属性,格式为这种格式
birthday, birthplace
我已经在模型中设置了这个
private string _birth;
/// <summary>
/// Birth information in format: birthday, birthplace
/// </summary>
[Column("birth")]
[JsonProperty("birth")]
public string Birth
{
get { return this._birth; }
set
{
this._birth= value;
OnPropertyChanged();
OnPropertyChanged("BirthData");
}
}
我还设置了一个这样的公共modifier
/// <summary>
/// Split the birth data if exists
/// </summary>
public string[] BirthData
{
get { return this.Birth?.Split(','); }
}
在我的 XAML 文件中,我已经为我的模型正确设置了所有内容,除了我无法理解如何在这样的东西上使用 TwoWay 绑定。您将在下面找到此特定属性的 XAML 摘录
<Label x:Name="BirthdayLabel" Content="Nato Il" />
<DatePicker x:Name="BirthdayDateTimePicker" SelectedDate="{Binding selectedModel.BirthData[0], Mode=TwoWay}"></DatePicker>
<Label x:Name="BirthplaceLabel" Content="Nato A"/>
<TextBox x:Name="BirthplaceTextBox" Text="{Binding selectedModel.BirthData[1], Mode=TwoWay}"/>
当然这不能正常工作,因为即使绑定按预期工作,我也会使用有关属性的旧信息得到selectedModel,我认为 TwoWay 绑定不适用于数据数组像这样。
我无法更改 DataSource,我必须找到一种方法来使用一个文本框和一个日期选择器,并在我的 ViewModel 中一起使用,除了一个名为 Update() 的方法之外,它没有太多功能,它采用当前 selectedModel .
【问题讨论】:
-
您是否考虑过在
Birth上使用 validation 属性? -
@MikeEason 我正在学习 WPF 和 MVVM 模式,你能链接我一些资源或向我解释一下验证属性是什么意思吗?
-
Here 你去吧。你可以绑定到
Birth(上面会有一些验证属性),如果用户输入任何错误,你可以简单地弹出该消息。 -
@MikeEason 谢谢,所以删除了
BirthData属性,而是使用Birth+ 验证。老实说,这很好:-) 荣誉 -
@Claudio,你想要双向绑定,对。验证很有趣,但这不是你的问题,对吧?
标签: c# wpf mvvm data-binding