Я определил некоторые ресурсы кисти в терминах системных цветов, например:
<SolidColorBrush
x:Key="brushKey1"
Color="{x:Static SystemColors.ControlColor}"
/>
(Это сделано потому, что какой-то сторонний код ожидает найти brushKey1
определено).
Но я заметил, что следующее также компилируется и работает:
<SolidColorBrush
x:Key="brushKey1"
Color="{DynamicResource {x:Static SystemColors.ControlBrush}}"
/>
Первый использует объект COLOR, а второй использует BRUSH.
Почему это работает? DynamicResource
автоматически выясняет, как выполнить какое-то приведение или преобразование?
Обратите внимание, что это не работает:
<SolidColorBrush
x:Key="brushKey1"
Color="{x:Static SystemColors.ControlBrush}"
/>
Эта строка будет компилироваться, но выдает исключение времени выполнения.