Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 获取数据选择器值MVVM_C#_Wpf - Fatal编程技术网

C# 获取数据选择器值MVVM

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

XAML:



我得到了
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");
    }
}