不能在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)作为DependencyProperty
。UnsetValue
。第二个值就可以了
我想也许我应该将标签名称更改为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'不支持直接内容。我不知道把它移到外面,因为这样绑定到合适的元素就有问题了
任何建议都将受到赞赏!!
我想这可能对你有用:(把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>