【问题标题】:How to bind data from Static class to Xaml如何将数据从静态类绑定到 Xaml
【发布时间】:2011-06-08 09:44:07
【问题描述】:

我有一个静态类,其中一个属性定义了一个资源管理器。例如。

public static class MyClass
{
public static MyResourceManager {get;set;}
}

我想将资源管理器中的密钥绑定到 XAML。我正在使用带有 MVVM 模式的 Silverlight 4。

如果我这样做:

<Button Content="{Binding LocalResource.Refresh}"/>

LocalResource 在我的视图模型中定义如下:

public object LocalResource {
get
{
return MyClass.MyResourceManager;
}
}

谁能提出更好的方法。我已将类设为静态,因为资源文件是动态加载的。我正在将它加载到 bootsrapper 中,并且必须在我的所有模块中使用它。

【问题讨论】:

    标签: silverlight mvvm silverlight-4.0


    【解决方案1】:

    像这样为您的应用程序实例化一次资源管理器怎么样:

    <Application xmlns:myNS="clr-namespace:MyNamespace;assembly=MyAssembly" ...>
        <Application.Resources>
            <myNS:MyResourceManager x:Key="MyResources" />
        </Application.Resources>
    </Application>
    

    然后你就可以像普通的 WPF 资源一样使用它了:

    <Button Content="{Binding Source={StaticResource MyResources}, Path=Refresh}" />
    

    【讨论】:

    • 它给出以下编译时错误:错误 12 类型“MyClass”不能用作对象元素,因为它不是公共的或未定义公共无参数构造函数或类型转换器。
    • 不要使用 MyClass 使用 MyRessourceManager。 MyResourceManager 需要有一个公共的无参数构造函数。
    • 如果您希望静态参数在应用程序的生命周期内更改,这是否也可以工作?如果是这样,我如何在代码中引用它以便我可以更改它?
    猜你喜欢
    • 2021-12-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-21
    • 2012-06-16
    相关资源
    最近更新 更多