WPF从XAML设置字符串的值

WPF从XAML设置字符串的值,wpf,xaml,wpf-controls,wpfdatagrid,Wpf,Xaml,Wpf Controls,Wpfdatagrid,我想知道是否有可能在每次有人从我的XAML中的datepicker中选择一个新日期时都将一个值设置为字符串。我有一个名为test12的公共字符串。非常感谢大家的帮助 <DataGridTemplateColumn Header="testprojectgrid"> <DataGridTemplateColumn.CellTemplate> <DataTemplate> <TextBlock Text="{B

我想知道是否有可能在每次有人从我的XAML中的datepicker中选择一个新日期时都将一个值设置为字符串。我有一个名为test12的公共字符串。非常感谢大家的帮助

 <DataGridTemplateColumn Header="testprojectgrid">
    <DataGridTemplateColumn.CellTemplate>
        <DataTemplate>
           <TextBlock Text="{Binding Start}" />
              </DataTemplate>
                    </DataGridTemplateColumn.CellTemplate>
                    <DataGridTemplateColumn.CellEditingTemplate>
              <DataTemplate>
                     <DatePicker SelectedDate="{Binding}" />
         </DataTemplate>
     </DataGridTemplateColumn.CellEditingTemplate>
  </DataGridTemplateColumn>

您可以将SelectedDate存储在DateTime属性中,并使用StringFormat以所需的任何格式显示它

否则,您可以使用IValueConverter将日期时间转换为字符串,并将字符串转换回日期时间

public class MyConverter : IValueConverter
    {
        public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
        {
            string date = value as string;
            return DateTime.Parse(date);
        }

        public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
        {
            return value.ToString();
        }
    }

<DatePicker SelectedDate="{Binding Start, RelativeSource={xxxxxx}, Converter={StaticResource myConverter}}"/>
公共类MyConverter:IValueConverter
{
公共对象转换(对象值、类型targetType、对象参数、System.Globalization.CultureInfo区域性)
{
字符串日期=作为字符串的值;
返回DateTime.Parse(日期);
}
公共对象转换回(对象值、类型targetType、对象参数、System.Globalization.CultureInfo区域性)
{
返回值.ToString();
}
}

您可以为
日期选择器添加处理程序。SelectedDateChanged
事件:

<DatePicker SelectedDate="{Binding}" 
    SelectedDateChanged="DatePicker_SelectionChanged" />

private void DatePicker_SelectionChanged(object sender, SelectionChangedEventArgs args)
{
    DatePicker datePicker = (DatePicker)sender;
    test12 = datePicker.SelectedDate.ToString();
}

私有无效日期选择器\u SelectionChanged(对象发送者,SelectionChangedEventArgs args)
{
DatePicker DatePicker=(DatePicker)发送方;
test12=datePicker.SelectedDate.ToString();
}

您可以在MSDN的页面上找到更多信息。

为什么不将SelectedDate存储在DateTime属性中,并使用StringFormat以您想要的任何格式显示它?我只是想学习如何将值设置为字符串。如果我错了,请纠正我,但如果发现文本绑定到“开始”很奇怪,请纠正我但是SelectedDate绑定到DataContext本身。。DataContext必须是DateTime,但DateTime没有任何Start属性。。