wpf 绑定 DataGridTextColumn

本文告诉大家如何在 DataGridTextColumn 使用绑定,因为很容易绑定就找不到数据。

使用 DataGrid 有一个坑,就是 Columns 的数据绑定拿不到数据。

例如下面的代码

   <Grid>
        <DataGrid x:Name="MyDataGrid" ItemsSource="{Binding DataList}" AutoGenerateColumns="False">
            <DataGrid.Columns>
                <DataGridTextColumn Header="Id" Binding="{Binding Id}"/>
                <DataGridTextColumn Header="Property1" Binding="{Binding Property1}"/>
                <DataGridTextColumn Header="Property2" Binding="{Binding Property2}"/>
          
                <DataGridTemplateColumn Header="Total">
                    <DataGridTemplateColumn.CellTemplate>
                        <DataTemplate>
                            <TextBlock>
                                <TextBlock.Text>
                                    <MultiBinding>
                                        <Binding Path="Property1"/>
                                        <Binding Path="Property2"/>
                                        <MultiBinding.Converter>
                                            <local:MyValueConverter/>
                                        </MultiBinding.Converter>
                                    </MultiBinding>
                                </TextBlock.Text>
                            </TextBlock>
                        </DataTemplate>
                    </DataGridTemplateColumn.CellTemplate>
                </DataGridTemplateColumn>
            </DataGrid.Columns>
        </DataGrid>
    </Grid>

可以看到绑定了DataGridTextColumn Header="Property1" Binding="{Binding Property1}" 可以拿到数值,但是在MultiBinding没有拿到数值,因为他在DataTemplateDataGridTemplateColumn没有数据。

解决方法很简单,使用RelativeSource找到数据。只需要修改<Binding Path="DataContext.Property2" RelativeSource="{RelativeSource AncestorType=DataGridCell}"/> 就可以。下面就是修改后的代码

  <Grid>
        <DataGrid x:Name="MyDataGrid" ItemsSource="{Binding DataList}" AutoGenerateColumns="False">
            <DataGrid.Columns>
                <DataGridTextColumn Header="Id" Binding="{Binding Id}"/>
                <DataGridTextColumn Header="Property1" Binding="{Binding Property1}"/>
                <DataGridTextColumn Header="Property2" Binding="{Binding Property2}"/>
                <DataGridTextColumn>
                    <DataGridTextColumn.Binding >
                        <MultiBinding >
                            <Binding Path="DataContext.Property1" RelativeSource="{RelativeSource AncestorType=DataGridCell}"/>
                            <Binding Path="DataContext.Property2" RelativeSource="{RelativeSource AncestorType=DataGridCell}"/>
                            <MultiBinding.Converter>
                                <local:MyValueConverter/>
                            </MultiBinding.Converter>
                        </MultiBinding>
                    </DataGridTextColumn.Binding>
                </DataGridTextColumn>
            </DataGrid.Columns>
        </DataGrid>
    </Grid>

本文会经常更新,请阅读原文: https://lindexi.gitee.io/lindexi/post/wpf-%E7%BB%91%E5%AE%9A-DataGridTextColumn.html ,以避免陈旧错误知识的误导,同时有更好的阅读体验。

本作品采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议 进行许可。欢迎转载、使用、重新发布,但务必保留文章署名林德熙(包含链接: https://lindexi.gitee.io ),不得用于商业目的,基于本文修改后的作品务必以相同的许可发布。如有任何疑问,请 与我联系

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏FreeBuf

地下暗流系列 |“免费雇佣”数十万用户,TigerEyeing病毒云控推广上千应用

一、概要 近期,腾讯反诈骗实验室和移动安全实验室通过自研AI引擎—TRP,从海量样本中监测到一个后门病毒家族TigerEyeing,据腾讯反诈骗实验室和移动安全...

234100
来自专栏FreeBuf

GPON Home Router家庭光纤网关设备漏洞技术分析

什么是GPON终端?PON终端,俗称“ 光猫”,作用类似于大家所熟悉的ADSL Modem,是光纤到户家庭需备的网络设备。根据不同的技术和标准,PON 又为分为...

16730
来自专栏信安之路

金融黑客的惯用手段 MITB

所谓的 MITB 技术就是 man-in-the-browser 的简称,也就是浏览器中间人攻击方式。我们先来回顾一下经典的中间人攻击方式。

10200
来自专栏NewTech视野

从黑客那里保护公司网站的12个技巧

通常您的网站开放运行如同无需锁门但依然安全开放的办公室一样:因为大多数人不会仅仅步入并访问您的办公室就洞察到您所有的数据信息。偶尔您会发现有不怀好意的人进入并偷...

10800
来自专栏BestSDK

0元买!买!买!支付平台再曝漏洞,JAVA SDK存在XXE攻击|附解决方法

国家信息安全漏洞共享平台(CNVD)收录了第三方支付平台JAVA SDK存在XXE漏洞(CNVD-2018-12508)。综合利用上述漏洞,攻击者可实现商户服务...

15330
来自专栏Seebug漏洞平台

创建简单、免费的恶意软件分析环境

原文地址:Creating a Simple Free Malware Analysis Environment

42560
来自专栏ytkah

认证的政府与媒体类订阅号可取得网页授权接口了

  继四月底已认证的政府与媒体类订阅号可申请微信支付后,今天微信公众平台向认证的政府与媒体类订阅号开放网页授权接口,授权后可以调用相应的接口,比如获取自动回复和...

1.3K50
来自专栏Seebug漏洞平台

创建简单、免费的恶意软件分析环境

原文:https://www.malwaretech.com/2017/11/creating-a-simple-free-malware-analysis-e...

42190
来自专栏V站

当你360搜索引擎收录为0与1,被K时应该这么做?

在被360搜索引擎满收录的那些日子,突然有一天,许多站点都被K光(不包含新站),当然月宅酱的博客也不例外,被K了只有www一个首页,也没有拒绝360爬虫,更没有...

50720
来自专栏FreeBuf

Uber平台现身份认证漏洞,利用漏洞可重置任意账户密码

意大利安全专家Vincenzo C. Aka发现Uber平台存在身份认证漏洞,任意账户都可以利用该漏洞重置密码,这一发现于昨日正式公布。实际上,引发此次“身份认...

21480

扫码关注云+社区

领取腾讯云代金券