C# 获取数据选择器值MVVM
XAML:C# 获取数据选择器值MVVM,c#,wpf,C#,Wpf,XAML: 我得到了01/01/0001作为默认值。如果我尝试从DatePicker更改它,则除了年份(仍然是0001)之外,所有内容都会更改。如果我试图检索该值,我仍然会得到01/01/0001,即使日期选择器显示日期和月份已更改为其他内容。首先,您应该使用依赖属性。这使得将属性绑定到DateTimePicker非常容易 <DatePicker Text="{Binding TheDate}" Grid.Row="4" Grid.Column="1" Width="150" mat
我得到了
01/01/0001
作为默认值。如果我尝试从DatePicker更改它,则除了年份(仍然是0001)之外,所有内容都会更改。如果我试图检索该值,我仍然会得到01/01/0001
,即使日期选择器显示日期和月份已更改为其他内容。首先,您应该使用依赖属性。这使得将属性绑定到DateTimePicker
非常容易
<DatePicker Text="{Binding TheDate}" Grid.Row="4" Grid.Column="1" Width="150" materialDesign:HintAssist.Hint="Put Date here"/>
现在,如果查看dependencProperty.Register()
的参数,您可以看到有一个名为PropertyMetadata
(第三个)的参数。这是您的默认值。在我的例子中是DateTime.Now
然后,您可以像其他属性一样,将依赖项属性绑定到DateTimePicker
public DateTime SelectedDateTime
{
get { return (DateTime)GetValue(SelectedDateTimeProperty); }
set { SetValue(SelectedDateTimeProperty, value); }
}
// Using a DependencyProperty as the backing store for SelectedDateTime. This enables animation, styling, binding, etc...
public static readonly DependencyProperty SelectedDateTimeProperty =
DependencyProperty.Register("SelectedDateTime", typeof(DateTime), typeof(YourModel), new PropertyMetadata(DateTime.Now));
希望这有帮助。将日期选择器的SelectedValue
属性绑定到源属性:
<DatePicker SelectedDate="{Binding SelectedDateTime}"/>
将日期选择器
绑定到SelectedDate
而不是文本
属性这显然起到了作用(检索值),但如何使日期在默认情况下不是01/01/0001?是否尝试设置_TheDate=DateTime。现在;(用于第一次定义)在您的ViewModel中?我尝试了一个示例差异ViewModel XAML源属性不需要定义为依赖属性。在定义源属性时,当然没有“应该使用依赖属性”。
<DatePicker SelectedDate="{Binding SelectedDateTime}"/>
<DatePicker SelectedDate="{Binding TheDate}" ... />
private DateTime _TheDate = new DateTime(2018, 05, 05); //<-- default date
public DateTime TheDate
{
get { return _TheDate; }
set
{
_TheDate = value;
NotifyOfPropertyChange("TheDate");
}
}