XAML: преобразовать кисть в цвет? - PullRequest
2 голосов
/ 03 февраля 2011

Я создаю пользовательский элемент управления с двумя цветами текста, ColorA и ColorB. ColorA связан со свойством Foreground элемента управления, а ColorB связан со свойством зависимостей, которое называется ForegroundAlt. Оба свойства являются Brush объектами. XAML элемента управления получает значения свойств с использованием этой разметки:

<SolidColorBrush x:Key="BrushA" Color="{Binding Path=Foreground, RelativeSource={RelativeSource TemplatedParent}}" />

<SolidColorBrush x:Key="BrushB" Color="{Binding Path=ForegroundAlt, RelativeSource={RelativeSource TemplatedParent}}" />

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

Обычно я просто создаю привязку данных к каждому свойству Brush.Color, например:

To="{Binding Source={StaticResource BrushB}, Path=Color}" 

Но это не сработает. Оказывается, нельзя использовать привязки для анимации внутри шаблона элемента управления .

В качестве обходного пути я хотел бы создать пару Color ресурсов для использования с ресурсами Brush:

<Color x:Key="ColorA" ??? />
<Color x:Key="ColorB" ??? />

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

Итак, вот мои вопросы:

- Как бы я объявил Color ресурсы?

- Есть ли более простой способ выполнить работу?

Спасибо за вашу помощь.

1 Ответ

0 голосов
/ 03 февраля 2011

Если я правильно понял, то, что вы пытаетесь, не сработает.Даже если вы определите Цвета как ресурсы, вам все равно придется привязать их к ресурсам кисти, и вы вернетесь к исходной точке!

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...