不能在RadGridView中使用多重绑定

本文关键字:绑定 RadGridView 不能 | 更新日期: 2023-09-27 18:05:45

我在使用grid的combobox列绑定时遇到了严重的困难。

我有一个grid,其中每一行代表一个项目。我的物品属性为"NumberPhase"

我想绑定某个combobox列的ItemsSource。对于不同的行,值的列表应该是不同的。

当绑定到我的项目的属性时,它工作得很好:

<telerik:gridviewcomboboxcolumn x:name="sensorCountColumn" edittriggers="CellClick"
    width="*" itemssourcebinding="NumberPhase" datamemberbinding="{Binding FactorType, Converter={StaticResource enumDescriptionConverter}, ConverterParameter=FACTOR_TYPE}"
    isreadonlybinding="{Binding IsThreePhaseParentAndNotDeleted, Converter={StaticResource invertBooleanConverter}}"
    editorstyle="{StaticResource radComboBoxStyle}">

但是,我想在另一个变量中添加dependency(该变量不属于此grid's row的项)。所以我尝试这样做:

<telerik:gridviewcomboboxcolumn x:name="sensorCountColumn" edittriggers="CellClick"
    width="*" datamemberbinding="{Binding FactorType, Converter={StaticResource enumDescriptionConverter}, ConverterParameter=FACTOR_TYPE}"
    isreadonlybinding="{Binding IsThreePhaseParentAndNotDeleted, Converter={StaticResource invertBooleanConverter}}"
    editorstyle="{StaticResource radComboBoxStyle}">
    <telerik:GridViewComboBoxColumn.ItemsSource>
        <MultiBinding diagnostics:PresentationTraceSources.TraceLevel="High" Converter="{StaticResource sensorCountConverter}">
            <Binding Path="NumberPhase" />
            <Binding Path="Data.PanelConfig.ID" Source="{StaticResource editedLocation}" />
        </MultiBinding>
    </telerik:GridViewComboBoxColumn.ItemsSource>
    ...
</telerik:gridviewcomboboxcolumn>

运行时,我的转换器获得了第一个值(NumberPhase)作为DependencyPropertyUnsetValue。第二个值就可以了

我想也许我应该将标签名称更改为ItemsSourceBinding而不是ItemsSource(因为在第一个示例中,我将该名称用于一个变量并且它有效)。所以我尝试这样做:

<telerik:gridviewcomboboxcolumn x:name="sensorCountColumn" edittriggers="CellClick"
    width="*" datamemberbinding="{Binding FactorType, Converter={StaticResource enumDescriptionConverter}, ConverterParameter=FACTOR_TYPE}"
    isreadonlybinding="{Binding IsThreePhaseParentAndNotDeleted, Converter={StaticResource invertBooleanConverter}}"
    editorstyle="{StaticResource radComboBoxStyle}">
<telerik:GridViewComboBoxColumn.ItemsSourceBinding>
    <MultiBinding diagnostics:PresentationTraceSources.TraceLevel="High" Converter="{StaticResource sensorCountConverter}">
        <Binding Path="NumberPhase" />
        <Binding Path="Data.PanelConfig.ID" Source="{StaticResource editedLocation}" />
    </MultiBinding>
</telerik:GridViewComboBoxColumn.ItemsSourceBinding>
</telerik:gridviewcomboboxcolumn>

结果是一个exception抛出消息:

'MultiBinding'不能在'ItemsSourceBinding'属性上设置类型'GridViewComboBoxColumn'。"MultiBinding"只能设置为ona DependencyProperty .

我也读过代理模式,但我认为我不能在我的情况下使用它,因为当我试图将它放置在网格内时,我得到以下消息:

类型'RadGridView'不支持直接内容。我不知道把它移到外面,因为这样绑定到合适的元素就有问题了

任何建议都将受到赞赏!!

不能在RadGridView中使用多重绑定

我想这可能对你有用:(把multibinding放到ItemTemplate中)

  <telerik:GridViewComboBoxColumn>
            <telerik:GridViewComboBoxColumn.ItemTemplate>
                <DataTemplate>
                    <TextBlock>
                        <TextBlock.Text>
                            <MultiBinding diagnostics:PresentationTraceSources.TraceLevel="High" Converter="{StaticResource sensorCountConverter}">
                                <Binding Path="NumberPhase" />
                                <Binding Path="Data.PanelConfig.ID" Source="{StaticResource editedLocation}" />
                            </MultiBinding>
                        </TextBlock.Text>
                    </TextBlock>
                </DataTemplate>
            </telerik:GridViewComboBoxColumn.ItemTemplate>
        </telerik:GridViewComboBoxColumn>