让 ControlTemplate 中的 AutowireViewModel 工作
Getting AutowireViewModel in a ControlTemplate to work
在我的 Xamarin 应用程序中,我使用 PRISM,在我的页面上,我使用 AutowireViewModel 支持我的视图模型。
我也在使用 ControlTemplates,因此我可以轻松更改外观。
<ContentView
ControlTemplate="{StaticResource LoginTemplate}">
</ContentView>
但问题是我无法让我的绑定在我的 contentTempaltes 上工作。
我使用 TemplateBinding 并尝试了 BindigContext。
<Label Text="{TemplateBinding BindingContext.Text" FontSize="Large" HorizontalOptions="Center" Margin="0, 30, 0, 0" />
Parent我也试过了。但没有绑定。
<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="{TemplateBing ..."} 没有任何进展。
此致,
托拜厄斯
这应该有效:
<Label Text="{TemplateBinding MyText}"/>
如果您的视图模型上有 MyText
属性...
当我们添加BindingContext="{TemplateBinding Parent.BindingContext}"
在 out 模板的根元素上,我们可以使用普通的绑定。
所以看起来 BindingContext 不会从父级自动设置。
Parent 和 BindingContext 在我们的模板视图中为 null。
这看起来很奇怪,因为如果这可行,为什么这不能成为默认行为?
在我的 Xamarin 应用程序中,我使用 PRISM,在我的页面上,我使用 AutowireViewModel 支持我的视图模型。 我也在使用 ControlTemplates,因此我可以轻松更改外观。
<ContentView
ControlTemplate="{StaticResource LoginTemplate}">
</ContentView>
但问题是我无法让我的绑定在我的 contentTempaltes 上工作。 我使用 TemplateBinding 并尝试了 BindigContext。
<Label Text="{TemplateBinding BindingContext.Text" FontSize="Large" HorizontalOptions="Center" Margin="0, 30, 0, 0" />
Parent我也试过了。但没有绑定。
<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="{TemplateBing ..."} 没有任何进展。
此致, 托拜厄斯
这应该有效:
<Label Text="{TemplateBinding MyText}"/>
如果您的视图模型上有 MyText
属性...
当我们添加BindingContext="{TemplateBinding Parent.BindingContext}"
在 out 模板的根元素上,我们可以使用普通的绑定。
所以看起来 BindingContext 不会从父级自动设置。 Parent 和 BindingContext 在我们的模板视图中为 null。
这看起来很奇怪,因为如果这可行,为什么这不能成为默认行为?