XAML 标签文本:绑定 + 动态资源(字符串格式?)
XAML Label Text: Binding + DynamicResource (String Format?)
对于 Xamarin.Forms - XAML 个文件:
有没有办法将 Label 的 Text 属性(在 XAML 中)绑定到 Binding + DynamicResource?也许使用字符串格式?
例如我试过这样的事情:
<Label Text="{DynamicResource resource, Binding binding, StringFormat='Resource: {0} and Binding: {1}"} />
但是,如果设置了动态资源,则不能声明绑定,反之亦然(例如,如果绑定已设置,则没有动态资源)
- 或使用值转换器将 returns 绑定字符串 "binding string + dynamic resource"? (为此创建一个值转换器似乎太过分了)
- 在代码中这可能适用于 string.Format(...)
我想你需要的是MultiBinding。
尝试像这样创建一个转换器class:
public class MultiBindingConverter : IMultiValueConverter
{
public object Convert(object[] values, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
return values[0].ToString() + " " + values[1].ToString();
}
public object[] ConvertBack(object value, Type[] targetTypes, object parameter, System.Globalization.CultureInfo culture)
{
throw new NotImplementedException();
}
}
在您的 App.xaml 或其他资源字典中引用它
<local:MultiBindingConverter x:Key="MultiBindingConverter" />
然后在您的视图中执行类似的操作:
<Label>
<Label.Content>
<MultiBinding Converter="{StaticResource MultiBindingConverter}">
<Binding Path="FirstProperty" />
<Binding Path="SecondProperty" />
</MultiBinding>
</Label.Content>
</Label>
FirstProperty 和 SecondProperty 只是 ViewModel 中的常规属性。
Xamarin.Forms 应用程序似乎不支持 MultiBinding。
这是一个很好的解决方法,它实现了对 Xamarin 的完整多绑定支持:
http://intellitect.com/multibinding-in-xamarin-forms/
这是一个可以使用的更简单的实现:
https://gist.github.com/Keboo/0d6e42028ea9e4256715
以及关于主题的讨论:
https://forums.xamarin.com/discussion/21034/multibinding-support
对于 Xamarin.Forms - XAML 个文件:
有没有办法将 Label 的 Text 属性(在 XAML 中)绑定到 Binding + DynamicResource?也许使用字符串格式?
例如我试过这样的事情:
<Label Text="{DynamicResource resource, Binding binding, StringFormat='Resource: {0} and Binding: {1}"} />
但是,如果设置了动态资源,则不能声明绑定,反之亦然(例如,如果绑定已设置,则没有动态资源)
- 或使用值转换器将 returns 绑定字符串 "binding string + dynamic resource"? (为此创建一个值转换器似乎太过分了)
- 在代码中这可能适用于 string.Format(...)
我想你需要的是MultiBinding。
尝试像这样创建一个转换器class:
public class MultiBindingConverter : IMultiValueConverter
{
public object Convert(object[] values, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
return values[0].ToString() + " " + values[1].ToString();
}
public object[] ConvertBack(object value, Type[] targetTypes, object parameter, System.Globalization.CultureInfo culture)
{
throw new NotImplementedException();
}
}
在您的 App.xaml 或其他资源字典中引用它
<local:MultiBindingConverter x:Key="MultiBindingConverter" />
然后在您的视图中执行类似的操作:
<Label>
<Label.Content>
<MultiBinding Converter="{StaticResource MultiBindingConverter}">
<Binding Path="FirstProperty" />
<Binding Path="SecondProperty" />
</MultiBinding>
</Label.Content>
</Label>
FirstProperty 和 SecondProperty 只是 ViewModel 中的常规属性。
Xamarin.Forms 应用程序似乎不支持 MultiBinding。
这是一个很好的解决方法,它实现了对 Xamarin 的完整多绑定支持:
http://intellitect.com/multibinding-in-xamarin-forms/
这是一个可以使用的更简单的实现:
https://gist.github.com/Keboo/0d6e42028ea9e4256715
以及关于主题的讨论:
https://forums.xamarin.com/discussion/21034/multibinding-support