1
WPF 3.5アプリケーションで使用するには、WindowsフォームDateTimePicker
をラップする必要があります。私はそれから制御を作った:WPFでのWindows Formsコントロールのラッピングが正しく機能しない
bool suppressUpdates;
public DatePicker()
{
InitializeComponent();
}
private void DateTimePicker_ValueChanged(object sender, EventArgs e)
{
if(!suppressUpdates)
SetValue(SelectedDateProperty, picker.Value);
}
public DateTime SelectedDate
{
get {return (DateTime)GetValue(SelectedDateProperty); }
set
{
suppressUpdates = true;
picker.Value = value;
SetValue(SelectedDateProperty, value);
suppressUpdates = false;
}
}
public static readonly DependencyProperty SelectedDateProperty =
DependencyProperty.Register("SelectedDate", typeof(DateTime),
typeof(DatePicker), new UIPropertyMetadata(DateTime.Now));
は、その後、私はWPFウィンドウでそれを使用します:
<UserControl><WindowsFormsHost>
<wf:DateTimePicker x:Name="picker" ValueChanged="DateTimePicker_ValueChanged"/>
</WindowsFormsHost></UserControl>
、ここでは、バッキング・コードである
<mui:DatePicker Width="300" SelectedDate="{Binding
Path=TheDate, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"/>
それが結合していますINotifyPropertyChanged
に対応するビューモデル。他のすべてのコントロールはそれだけで結構ですが、私のDateTimePickerはviewmodelで指定された日付の値を取得しません。ただし、値の変更が反映されます。
私は間違っていますか?