нельзя использовать мультибиндинг в RadGridView

У меня серьезные трудности с привязкой столбца сетки combobox.

У меня есть grid, в котором каждая строка представляет элемент. Мой элемент имеет свойство "NumberPhase".

Я хочу связать ItemsSource определенного столбца combobox. Список значений должен быть разным для разных строк.

При привязке только к свойству моего элемента он отлично работает:

<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» может быть установлен только для свойства DependencyProperty объекта DependencyObject.

Я также читал о шаблоне прокси, но думаю, что не могу использовать его в моем случае, потому что когда я попробуйте поместить его в сетку, я получаю следующее сообщение:

Тип «RadGridView» не поддерживает прямое содержимое. Я не могу разместить его снаружи, потому что тогда у меня возникнет проблема с привязкой к нужному элементу строки сетки.

Любое предложение будет оценено!!


person user1028741    schedule 31.07.2015    source источник


Ответы (1)


Я думаю, это может быть вам полезно: (поместите мультипривязку внутри 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>
person ltiveron    schedule 23.12.2015