在后面的代码中使用StaticResource和x:Static

时间:2017-07-21 14:21:12

标签: c# wpf code-behind markup-extensions

我喜欢this flat button style

<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),
    ...
};

将抛出:

  

WindowsBase.dll中出现'System.Windows.ResourceReferenceKeyNotFoundException'类型的异常,但未在用户代码中处理

     

其他信息:找不到'ToolBar.ButtonStyleKey'资源。

1 个答案:

答案 0 :(得分:1)

根据您的工作代码,它应如下所示:

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

换句话说,抛弃报价。 ButtonStyleKey不是名称,而是返回具有正确名称的字符串的静态属性。