我有一个简单的演示WPF
应用程序。主页包含包含DataGrid
属性ObservableCollection
绑定到RowVM
类的DateTime
的{{1}}。我创建了MyDate
-CalendarEx
,用于包装Windows窗体控件UserControl
并公开了DateTimePicker
依赖项属性。
我希望当我在SelectedDate
行的CalendarEx
中选择一个日期时,它也会同时更改DataGrid
列。但这是行不通的-MyDate
列的值从未更改,并且从未调用过MyDate
属性设置器。
它可以在MyDate
之外运行-具有DataGrid
属性和SimpleDate
StandAlone
。当我更改CalendarEx
的值时-StandAlone
的值立即更改。
有人知道会发生什么以及如何解决吗?
MainWindow.xaml:
Label
CalendarEx.xaml:
<StackPanel>
<Label Content="{Binding Path=SimpleDate}"></Label>
<local:CalendarEx x:Name="StandAlone" SelectedDate="{Binding Path=SimpleDate, Mode=TwoWay}"></local:CalendarEx>
<DataGrid x:Name="MyGrid"
ItemsSource="{Binding Rows, Mode=TwoWay}"
AutoGenerateColumns="False">
<DataGrid.Columns>
<DataGridTemplateColumn>
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<local:CalendarEx SelectedDate="{Binding Path=MyDate, Mode=TwoWay}"></local:CalendarEx>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
<DataGridTextColumn Header="MyDate" Binding="{Binding Path=MyDate}" Width="90" />
</DataGrid.Columns>
</DataGrid>
</StackPanel>
CalendarEx.xaml.cs:
<UserControl x:Class="TestCalendar.CalendarEx"
...
xmlns:wf="clr-namespace:System.Windows.Forms;assembly=System.Windows.Forms">
<Grid>
<WindowsFormsHost>
<wf:DateTimePicker x:Name="MyPicker" />
</WindowsFormsHost>
</Grid>
</UserControl>