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}"} />

但是,如果设置了动态资源,则不能声明绑定,反之亦然(例如,如果绑定已设置,则没有动态资源)

我想你需要的是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