C# xaml中的静态方法调用

C# xaml中的静态方法调用,c#,xaml,styles,microsoft-metro,C#,Xaml,Styles,Microsoft Metro,如何在metro风格的应用程序中的xaml中使用静态方法(带参数)?在wpf中,我可以使用ObjectDataProvider,但WinRT中没有这样的东西 我需要像这样使用它: <button x:Name="MyButton" Content=MyStaticMethodCall("Sth") /> 有办法做到这一点吗?或者将对象存储在资源中,然后像这样调用他的方法 <button x:Name="MyButton" Content={StaticResource M

如何在metro风格的应用程序中的xaml中使用静态方法(带参数)?在wpf中,我可以使用ObjectDataProvider,但WinRT中没有这样的东西

我需要像这样使用它:

<button x:Name="MyButton" Content=MyStaticMethodCall("Sth") />

有办法做到这一点吗?或者将对象存储在资源中,然后像这样调用他的方法

<button x:Name="MyButton" Content={StaticResource MyObject, Path=MyObject.MyMethod("bla") />


我记得在以前的一个项目中,metro应用程序无法访问静态代码。我们必须引用一些常量,如果它们是常量或静态的,就无法引用它们。但是随着时间的推移,也许有些东西改变了,但我怀疑…

我不确定你想要什么,但是为什么不使用MarkupExtension呢

您只需添加xaml,然后使用ProvideValue方法调用静态方法


如果您需要代码示例,只需留下注释。

这不是它的工作方式,而不是调用一个方法,您应该使用数据绑定-将按钮的DataContext或整个页面设置为您的对象,然后像这样绑定按钮内容:

<Button x:Name="MyButton" Content="{Binding ButtonContent}" />

有关数据绑定的一些基本信息如下:

不抱歉,在结尾处,我们只是复制了xaml页面中的定义。。。但就功能而言,我真的不知道这会有多好。但我不认为这能解决我的问题。我需要得到方法的结果,并设置按钮的内容属性。我想我可以接受“sender”对象,但不是每个对象都有内容——比方说我想设置Text属性。然后我需要使用强制转换或反射来获取属性名称。另一种方法是传递方法的结果应该分配给的属性名。也许这很难看,但如果没有其他选择的话……WinRT不提供MarkupExtension。真可怜。使用值转换器怎么样?它们不需要从MarkupExtension派生,就可以在XAML中实例化。您还可以提供附加的控件,当然还有转换器参数。尝试类似Converter={mynamespace:MyConverter-Property1=“Hello-World”,Property2={StaticResource-resourceKey}的方法,这可能是个不错的主意。我来看看。不,我不能设置数据上下文。我想绑定方法,因为内容取决于参数。我无法创建所有内容场景并将它们作为DataContext的属性。因为无法绑定到方法,所以可以在绑定中使用Converter和ConverterParameter,并在其中返回所需的任何内容。