C# WPF DatePicker 绑定

D. *_*hov 2 c# wpf binding datepicker

我对 DatePicker 的 Binding nullable 属性有问题。我第一次运行我的应用程序时我有什么, 但是当我将日期设置为从今天到 7 天后它工作正常时。如果我在一周后选择日期,则属性设置为 null。 一周后

public class Pledge
{
    public int ID { get; set; }
    public string ClientName { get; set; }
    public string Passport { get; set; }
    public string IssuedBy { get; set; }
    [Column(TypeName = "Date")]
    public DateTime? Birthday { get; set; }
    [Column(TypeName = "Date")]
    public DateTime? IssuedDate { get; set; }
    public string Registration { get; set; }
    public string Phone { get; set; }
    public string Model { get; set; }
    public string SerialNumber { get; set; }
    [Column(TypeName = "Date")]
    public DateTime? ReceiptDate { get; set; }
    [Column(TypeName = "Date")]
    public DateTime? IssueDate { get; set; }
    public decimal? Result { get; set; }
    public decimal? MoneyForClient { get; set; }
    public int? Procent { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

XAML:

<StackPanel>
                <TextBlock Text="???:" Margin="4"/>
                <TextBox Text="{Binding Path=ClientName, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"/>
                <TextBlock Text="????? ????????:" Margin="4"/>
                <xctk:MaskedTextBox Text="{Binding Path=Phone, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" Mask="+7 (000) 000-00-00"/>
                <TextBlock Text="???? ????????:" Margin="4"/>
                <DatePicker Text="{Binding Path=Birthday, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"/>
                <TextBlock Text="???????" Margin="4"/>
                <xctk:MaskedTextBox Text="{Binding Path=Passport, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" Mask="0000-000000"/>
                <TextBlock Text="???? ??????:" Margin="4"/>
                <DatePicker Text="{Binding Path=IssuedDate, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"/>
                <TextBlock Text="?????:" Margin="4"/>
                <TextBox Text="{Binding Path=IssuedBy, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" TextWrapping="Wrap" AcceptsReturn="True" Height="100"/>
                <TextBlock Text="????????:" Margin="4"/>
                <TextBox Text="{Binding Path=Registration, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" TextWrapping="Wrap" AcceptsReturn="True" Height="100"/>
                <TextBlock Text="??????:" Margin="4"/>
                <TextBox Text="{Binding Path=Model, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"/>
                <TextBlock Text="???????? ?????(IMEI):" Margin="4"/>
                <TextBox Text="{Binding Path=SerialNumber, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"/>
                <TextBlock Text="????? ?? ??????:" Margin="4"/>
                <TextBox Text="{Binding Path=MoneyForClient, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"/>
                <TextBlock Text="???????:" Margin="4"/>
                <TextBox Text="{Binding Path=Procent, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"/>
                <TextBlock Text="???? ??????:" Margin="4"/>
                <DatePicker Text="{Binding Path=ReceiptDate, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"/>
                <TextBlock Text="???? ??????:" Margin="4"/>
                <DatePicker Text="{Binding Path=IssueDate, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"/>
            </StackPanel>
Run Code Online (Sandbox Code Playgroud)

D. *_*hov 5

发现问题。我混淆了属性。必须绑定到 DatePicker 中的“选定日期”而不是“文本”。 曾是:

<DatePicker Text="{Binding Path=MoneyForClient, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"/>
Run Code Online (Sandbox Code Playgroud)

应该:

<DatePicker SelectedDate="{Binding Path=MoneyForClient, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"/>
Run Code Online (Sandbox Code Playgroud)

  • 奇怪的是,TextBox 没有 SelectedDate 属性,但 DatePicker 有! (2认同)