在我的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;}也没有任何进展。
最诚挚的问候, 托拜厄斯
答案 0 :(得分:1)
当我们添加BindingContext="{TemplateBinding Parent.BindingContext}"
时
在out模板的根元素上我们可以使用普通的Binding。
所以看起来BindingContext不会自动从父设置。 我们的模板视图中Parent和BindingContext为null。
这看起来很奇怪,因为如果这样可行,为什么这不能成为默认行为呢?
答案 1 :(得分:0)
这应该有效:
phone-carousel
如果您的视图模型上有<Label Text="{TemplateBinding MyText}"/>
属性...