让ControlTemplate中的AutowireViewModel工作

时间:2017-06-20 06:08:30

标签: c# xamarin xamarin.forms prism

在我的Xamarin应用程序中,我使用PRISM,在我的页面上,我使用AutowireViewModel支持我的viewmodels。 我也使用ControlTemplates,因此我可以轻松改变外观。

    <ContentView 
        ControlTemplate="{StaticResource LoginTemplate}">
    </ContentView>

但问题是我无法让我的绑定工作在我的contentTempaltes上。 我使用TemplateBinding并尝试了BindigContext。

          <Label Text="{TemplateBinding BindingContext.Text" FontSize="Large" HorizontalOptions="Center" Margin="0, 30, 0, 0" />

我也试过了父母。但没有约束力。

          <Label Text="{TemplateBinding Parent.Text" FontSize="Large" HorizontalOptions="Center" Margin="0, 30, 0, 0" />

          <Label Text="{TemplateBinding BindingContext.Parent.Text" FontSize="Large" HorizontalOptions="Center" Margin="0, 30, 0, 0" />

          <Label Text="{Binding BindingContext.Text" FontSize="Large" HorizontalOptions="Center" Margin="0, 30, 0, 0" />

... 如果我创建一个只有一些属性的纯视图模型,我可以在我的page.xaml中应用BindingContext元素时绑定它。

但我希望Prism将我的AutowireViewModel设置为BindixContext ... 但是如何?

我已经尝试了BindixContext =&#34; {TemplateBing ...&#34;}也没有任何进展。

最诚挚的问候, 托拜厄斯

2 个答案:

答案 0 :(得分:1)

当我们添加BindingContext="{TemplateBinding Parent.BindingContext}"时 在out模板的根元素上我们可以使用普通的Binding。

所以看起来BindingContext不会自动从父设置。 我们的模板视图中Parent和BindingContext为null。

这看起来很奇怪,因为如果这样可行,为什么这不能成为默认行为呢?

答案 1 :(得分:0)

这应该有效:

phone-carousel

如果您的视图模型上有<Label Text="{TemplateBinding MyText}"/> 属性...