You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

GridView中RadComboBox绑定异常:选中值同步至所有行求助

解决RadGridView中RadComboBox选中值全行重复的问题

嘿,我看了你的代码,立马就发现问题所在了——所有行的RadComboBox都绑定到了同一个全局属性上,难怪改一个值所有行都跟着变!

问题根源

你在CellTemplate和CellEditTemplate里,都是通过RelativeSource去绑定RadGridView的DataContext.AccDocumentItem.Description1,这个AccDocumentItem应该是整个GridView的ViewModel里的全局属性吧?那所有行的这个列自然都会显示同一个值,改的时候也会一起同步变化。

正确的逻辑应该是:每行的内容要绑定到当前行对应的数据项属性,而不是全局的ViewModel属性。

修正方案

我给你调整了代码,核心就是把绑定目标从全局的AccDocumentItem改成当前行的数据项:

1. 修正CellTemplate的绑定

原来的TextBlock绑定的是全局属性,现在改成绑定当前行的Description1(假设你的每行数据对象包含这个属性):

<telerik:GridViewDataColumn.CellTemplate>
    <DataTemplate>
        <TextBlock Text="{Binding Description1}"/>
    </DataTemplate>
</telerik:GridViewDataColumn.CellTemplate>

2. 修正CellEditTemplate的绑定

RadComboBox的Text属性同样绑定当前行的Description1,去掉多余的RelativeSource;如果ItemsSource是全局共用的数据源,那可以保留原来的RelativeSource绑定,命令部分如果是全局命令也没问题:

<telerik:GridViewDataColumn.CellEditTemplate>
    <DataTemplate>
        <telerik:RadComboBox IsEditable="True" 
                             DisplayMemberPath="SLStandardDescriptionTitle" 
                             ItemsSource="{Binding DataContext.AccDocumentItem.SelectedSL.SLStandardDescriptions, RelativeSource={RelativeSource AncestorType={x:Type telerik:RadGridView}}}" 
                             Text="{Binding Description1, Mode=TwoWay}">
            <i:Interaction.Triggers>
                <i:EventTrigger EventName="DropDownOpened">
                    <i:InvokeCommandAction Command="{Binding DataContext.SLStandardDescriptionsDropDownOpenedCommand, RelativeSource={RelativeSource AncestorType={x:Type telerik:RadGridView}}}" 
                                           CommandParameter="DLType2"/>
                </i:EventTrigger>
            </i:Interaction.Triggers>
        </telerik:RadComboBox>
    </DataTemplate>
</telerik:GridViewDataColumn.CellEditTemplate>

额外注意点

  • 确保你的RadGridView的ItemsSource是绑定到一个数据集合,集合里的每个元素(也就是每行的数据)都包含Description1属性,这样每行的绑定才是独立的。
  • 如果SLStandardDescriptions是每行数据独有的,那ItemsSource的绑定也要改成{Binding SelectedSL.SLStandardDescriptions}(对应当前行数据的属性),而不是找全局的AccDocumentItem。

这样调整后,每行的ComboBox就会独立绑定自己行的数据,不会再出现全行值重复的问题啦!

内容的提问来源于stack exchange,提问作者Elham Azadfar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 07:56:35