Использование StaticResource и x:Static в коде позади

Мне нравится этот стиль плоской кнопки:

<Button Style="{StaticResource {x:Static ToolBar.ButtonStyleKey}}" BorderThickness="0" ... />

Попытка создать такую ​​кнопку в коде сзади:

var button = new Button
{
    Style = (Style)Application.Current.FindResource("ToolBar.ButtonStyleKey"), // wrong
    BorderThickness = new Thickness(0),
    ...
};

Кинет

Исключение типа "System.Windows.ResourceReferenceKeyNotFoundException" произошло в WindowsBase.dll, но не было обработано в коде пользователя

Дополнительная информация: ресурс 'ToolBar.ButtonStyleKey' не найден.

1 ответ

Решение

Согласно вашему рабочему коду он должен выглядеть так:

Style = (Style)Application.Current.FindResource(ToolBar.ButtonStyleKey)

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

Другие вопросы по тегам