Конвертер стилей wpf: "Преобразование", вызываемое каждым столбцом таблицы данных, используя его - PullRequest
0 голосов
/ 17 июня 2010

Я создал конвертер и назначил его стилю.

чем я назначил этот стиль для столбцов, которые я хочу затронуть.

при добавлении строк и при переходе через отладчик я заметил, что метод конвертирования вызывается 1 раз в столбце (каждый раз, когда он используется).

есть ли способ лучше оптимизировать его, чтобы он вызывался только один раз, и все столбцы, использующие его, получают одинаковое значение?

 <Style x:Key="ConditionalColorStyle" TargetType="{x:Type DataGridCell}" BasedOn="{StaticResource CellStyle}">
        <Setter Property="Foreground">
            <Setter.Value>
                <Binding>
                    <Binding.Converter>
                        <local:ConditionalColorConverter />
                    </Binding.Converter>
                </Binding>
            </Setter.Value>
        </Setter>
    </Style>

Ответы [ 2 ]

0 голосов
/ 22 июня 2010

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

Преобразователь НЕ будет влиять на ячейки, для которых установлены эти стили, поскольку стиль ячейки имеет приоритет над стилем строки.

, поэтому существует некоторая компромиссная гибкость на уровне ячейки по сравнению с преобразованием, выполняемым для каждого столбца.

0 голосов
/ 17 июня 2010

Возможно, вы могли бы кэшировать результат преобразователя в переменной-члене.

        if (this._result == null)
            this._result = this.LookupStyle();
        return this._result;
...