如何在不使用TryFindResource的情况下从代码背后获取StaticResource的实际对象?

时间:2018-08-02 10:58:26

标签: c# wpf xaml staticresource

我在 XAML 文件中使用了StaticResource。我使用StaticResource命名了x:Name。现在,我要访问StaticResource的实际对象。

以下是文件:

在XAML文件中:

<Window x:Class="MyProject.MainWindow"
        ...
        Title="MainWindow" Height="350" Width="525">

    <Grid>
        <StaticResource ResourceKey="MyButtonResource" x:Name="MyResource" />
    </Grid>
</Window>

在代码隐藏的CS文件中:

Button buttonFromStaticResource = MyResource.SomeProperty as Button;

在这里,我需要类似SomeProperty或任何方法来获取实际对象(在这种情况下,它是一个Button对象)。

编辑:

获取对象的一种方法是使用TryFindResource

Button buttonFromStaticResource = this.TryFindResource("MyButtonResource") as Button;

但是此解决方案涉及一个字符串参数。还有什么比这更好的解决方案,以便我可以直接使用MyResource(通过在XAML文件中利用x:Name)而不使用任何字符串?

1 个答案:

答案 0 :(得分:0)

如何在c#中读取静态资源,请检查以下代码

<Window x:Class="MyProject.MainWindow"
        ...
        Title="MainWindow" Height="350" Width="525">

    <Grid>
        <StaticResource ResourceKey="MyButtonResource" x:Name="MyResource" />
    </Grid>
</Window>

c#

var currentResources= this.Resources["MyButtonResource"];