[英]XAML bind to static method with parameters
I got a static class like the following: 我有一个像下面这样的静态类:
public static class Lang
{
public static string GetString(string name)
{
//CODE
}
}
Now i want to access this static function within xaml as a binding. 现在我想在xaml中访问这个静态函数作为绑定。 Is there such a way for example:
有没有这样的方式,例如:
<Label Content="{Binding Path="{x:static lang:Lang.GetString, Parameters={parameter1}}"/>
Or is it necessary to create a ObjectDataProvider for each possible parameter? 或者是否有必要为每个可能的参数创建一个ObjectDataProvider?
Hope someone is able to help me. 希望有人能够帮助我。 Thanks in advance!
提前致谢!
I get this need too. 我也得到了这个需求。 I "solved" using a converter (like suggested here ).
我使用转换器“解决”(如此处所示 )。
First, create a converter which return the translated string: 首先,创建一个返回翻译后的字符串的转换器:
public class LanguageConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
if (parameter == null)
return string.Empty;
if (parameter is string)
return Resources.ResourceManager.GetString((string)parameter);
else
return string.Empty;
}
public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
throw new NotImplementedException();
}
}
then use it into XAML: 然后将其用于XAML:
<Window.Resources>
<local:LanguageConverter x:Key="LangConverter" />
</Window.Resources>
<Label Content="{Binding Converter={StaticResource LangConverter},
ConverterParameter=ResourceKey}"/>
Regards. 问候。
The right way would be to go the objectdataprovider route. 正确的方法是去objectdataprovider路线。 Although if you are just binding to text rather than use a label, I would use a textblock.
虽然如果你只是绑定文本而不是使用标签,我会使用文本块。
<ObjectDataProvider x:Key="yourStaticData"
ObjectType="{x:Type lang:Lang}"
MethodName="GetString" >
<ObjectDataProvider.MethodParameters>
<s:String>Parameter1</s:String>
</ObjectDataProvider.MethodParameters>
</ObjectDataProvider>
<TextBlock Text={Binding Source={StaticResource yourStaticData}}/>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.