在参考资料中绑定Datacontext

 涵涵 发布于 2023-01-29 19:56

我在DataGrid的资源中绑定值时遇到问题.在资源之外 - 标签它完美地工作,但在里面它不起作用.我想Datacontext可能已更改或为null.我不知道该怎么办.我读了一些关于freezables的内容,但我也没有让它们起作用.这是解决方案还是那个,我做不到的.这里我的代码与非工作和工作部分 - 仅用于演示.如果点击标题行,我需要在Resources-Section中使用Contextmenu才能获取它.

    
 
    
        
            
                
                    
                    
                            
                                    
            
            
                   
        
            
                
                    
                    
                    
                
            
                    
    

1 个回答
  • 问题ContextMenu 不在于与DataGrid相同的Visual树,因此无法继承DataGrid的DataContext.

    您可以使用它x:Reference来获取DataGrid实例并使用它的DataContext进行绑定.(x:参考可从WPF 4.0获得)

    x:NamedataGrid并绑定它:

    <DataGrid ItemsSource="{Binding Lst, UpdateSourceTrigger=PropertyChanged}"
              x:Name="dataGrid">
       <DataGrid.Resources>
           <ContextMenu x:Key="DataGridColumnHeaderContextMenu">
             <MenuItem Header="{StaticResource General}">
                <CheckBox Content="Testentry Header"
                          IsChecked="{Binding DataContext.TestCheck,
                                              Source={x:Reference dataGrid}}"/>
    ....
    </DataGrid>
    

    您也可以使用Freezable类似于您提到的类来实现此目的.有关通过Freezable实现此目的的详细信息,请参阅此处的答案.

    2023-01-29 19:58 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有