Windows窗体控件在WPF中的包装不';我不能正常工作

Windows窗体控件在WPF中的包装不';我不能正常工作,wpf,winforms,data-binding,datepicker,Wpf,Winforms,Data Binding,Datepicker,我需要包装Windows窗体DateTimePicker,以便在我的WPF3.5应用程序中使用它。我已经控制了它: <UserControl><WindowsFormsHost> <wf:DateTimePicker x:Name="picker" ValueChanged="DateTimePicker_ValueChanged"/> </WindowsFormsHost></UserControl> 然后我在WPF窗口中使用它:

我需要包装Windows窗体
DateTimePicker
,以便在我的WPF3.5应用程序中使用它。我已经控制了它:

<UserControl><WindowsFormsHost>
<wf:DateTimePicker x:Name="picker" ValueChanged="DateTimePicker_ValueChanged"/>
</WindowsFormsHost></UserControl>
然后我在WPF窗口中使用它:

<mui:DatePicker Width="300" SelectedDate="{Binding
Path=TheDate, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"/>

它绑定到已启用的视图模型中。所有其他控件都可以绑定到它,但是我的DateTimePicker没有获得viewmodel中指定的日期值。但是,它会将其值更改传播回它

我做错了什么?

好吧,很简单

    private void DateTimePicker_ValueChanged(object sender, EventArgs e)
    {
        SetValue(SelectedDateProperty, picker.Value);
    }

    public DateTime SelectedDate
    {
        get { return (DateTime)GetValue(SelectedDateProperty); }
        set { SetValue(SelectedDateProperty, value); }
    }

    public static readonly DependencyProperty SelectedDateProperty =
        DependencyProperty.Register("SelectedDate", typeof(DateTime), typeof(DatePicker), new UIPropertyMetadata(DateTime.Now, textChangedCallback));

    private static void textChangedCallback(DependencyObject d, DependencyPropertyChangedEventArgs e)
    {
        DatePicker input = (DatePicker)d;
        input.picker.Value = (DateTime)e.NewValue;
    }
好的,很简单

    private void DateTimePicker_ValueChanged(object sender, EventArgs e)
    {
        SetValue(SelectedDateProperty, picker.Value);
    }

    public DateTime SelectedDate
    {
        get { return (DateTime)GetValue(SelectedDateProperty); }
        set { SetValue(SelectedDateProperty, value); }
    }

    public static readonly DependencyProperty SelectedDateProperty =
        DependencyProperty.Register("SelectedDate", typeof(DateTime), typeof(DatePicker), new UIPropertyMetadata(DateTime.Now, textChangedCallback));

    private static void textChangedCallback(DependencyObject d, DependencyPropertyChangedEventArgs e)
    {
        DatePicker input = (DatePicker)d;
        input.picker.Value = (DateTime)e.NewValue;
    }