WPF与DataGrid中的WinForms控件的双向绑定

时间:2018-08-19 11:14:33

标签: c# wpf wpfdatagrid

我有一个简单的演示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>

0 个答案:

没有答案