在我的XAML中,我定义了这样的绑定上下文:
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
xmlns:local="clr-namespace:Japanese;assembly=Japanese"
xmlns:template="clr-namespace:Japanese.Templates"
xmlns:viewModels="clr-namespace:Japanese.ViewModels; assembly=Japanese"
x:Class="Japanese.Cards" Title="{Binding Title}">
<ContentPage.BindingContext>
<viewModels:CardsViewModel />
</ContentPage.BindingContext>
</ContentPage>我想知道的是如何在我的C#后端访问这个上下文。
public partial class Cards : ContentPage
{
public Cards()
{
InitializeComponent();
NavigationPage.SetBackButtonTitle(this, "Back");
}
protected override void OnAppearing()
{
// I want to set some properties of the view here发布于 2018-08-13 08:37:11
您似乎不能像XAML中的其他元素那样给它一个x:Name属性。在这种情况下,您的选项仅限于在代码隐藏中为绑定上下文声明对象,或从BindingContext属性引用对象。
对于后一种方法,这样做:
protected override void OnAppearing()
{
var cardsViewModel = BindingContext as CardsViewModel;
if (cardsViewModel == null)
return;
cardsViewModel.Property = Value;
}先前的答案供参考:
你应该可以给它起一个这样的名字:
<ContentPage.BindingContext>
<viewModels:CardsViewModel x:Name="cardsViewModel" />
</ContentPage.BindingContext>这将有效地在生成的代码中创建这样的声明:
private CardsViewModel cardsViewModel;您现在可以在代码隐藏中访问它:
protected override void OnAppearing()
{
cardsViewModel.Property = Value;
}https://stackoverflow.com/questions/51818201
复制相似问题