Настройка MultiBinding для столбца WPF DataGrid - PullRequest
2 голосов
/ 02 мая 2011

Я пытаюсь стилизовать WPF DataGrid, чтобы при изменении свойства из предыдущей строки появлялся визуальный индикатор. Для начала просто изменив цвет переднего плана. Однако, когда я делаю это, привязки в моем многозначном преобразователе нарушаются. Это кажется странным, потому что привязка прекрасно работает для содержимого столбца. Таким образом, в приведенном ниже примере показано значение местоположения, но многозначный преобразователь получает DependencyProperty.Unset для каждого передаваемого значения. У кого-нибудь есть идеи относительно того, что я делаю неправильно?

<DataGridTextColumn Header="Location" Binding="{Binding Location}">
    <DataGridTextColumn.Foreground>
        <MultiBinding Converter="{StaticResource ResourceKey=valueEqualityToBrush}">
           <Binding Path="Location" />
           <Binding Path="Location" RelativeSource="{RelativeSource Mode=PreviousData}" />
        </MultiBinding>
    </DataGridTextColumn.Foreground>
</DataGridTextColumn>

Спасибо, Грег

Ответы [ 2 ]

1 голос
/ 05 мая 2011

DataGridColumns не привязываются к свойствам, отличным от содержимого ячейки, поскольку они не являются частью дерева элементов.Здесь представлен обходной путь: http://blogs.infragistics.com/blogs/josh_smith/archive/2008/06/26/data-binding-the-isvisible-property-of-contextualtabgroup.aspx

Просто используйте DataContextSpy, и все будет хорошо.

1 голос
/ 02 мая 2011

Вероятно, у вас есть эта ошибка в окне «Вывод»:

Ошибка System.Windows.Data: 36: не удается найти предыдущий элемент для использования в качестве RelativeSource, поскольку в сгенерированном контексте нет родителя.

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

...