none
如何绑定用户控件的DataContext? RRS feed

  • 问题

  • 我在一个window中使用了用户控件,windows中已经使用DataContext绑定了ATD,而ATD中有定义Boards属性,为什么这里Boards绑定不成功?应该如何写?

        <Window.DataContext>
            <local:ATD/>
        </Window.DataContext>

    <TabItem Header="_Board" Width="120" Height="30"> <local:Tab_Board x:Name="TabBoard" DataContext="{Binding Boards}"/> </TabItem>


    2017年12月5日 2:49

全部回复

  • Hi,

    单单看你的代码,是可以绑定成功的;

    建议你提供更多的代码,或者通过OneDrive上传一个小demo? 我会帮你测试。

    Sincerely,

    Bob


    MSDN Community Support
    Please remember to click "Mark as Answer" the responses that resolved your issue, and to click "Unmark as Answer" if not. This can be beneficial to other community members reading this thread. If you have any compliments or complaints to MSDN Support, feel free to contact MSDNFSF@microsoft.com.

    2017年12月5日 8:35
    版主
  • Thx,

    this is a demo.

    https://1drv.ms/u/s!AkFNOA27zwVMpNtyGCumbyGLfh5E3w

    2017年12月11日 1:36
  • Hi Neo Xiao,

    我下载了你的Sample,问题不在你之前贴出的代码而在“Tab_Board.xaml”中,在这个xaml文件中,你对DataGrid的ItemSource进行了绑定:

    ItemsSource="{Binding Boards, UpdateSourceTrigger=PropertyChanged}"

    这段代码是有问题的,因为Boards这个属性并不存在Tab_Board控件中,而且在MainWindow.xaml中已经对绑Tab_Board的DataContext绑定,所以在Tab_Board.xaml中只需要这样修改就行:

    ItemsSource="{Binding RelativeSource={RelativeSource AncestorType=UserControl},Path=DataContext}"

    另外,Boards的是ObservableCollection类型你可以不设置UpdateSourceTrigger=PropertyChanged,而设置BindsDirectlyToSource=True。

    你也可以看看MSDN上关于绑定的介绍。

    Best wishes,
    Lee

    • 已建议为答案 Li Jun Jie 2017年12月27日 6:24
    2017年12月25日 13:29