Xamarin 使用主/详细模板在代码隐藏中绑定
我已经生成了一个Master/Detail view应用程序(通过Xamarin的Master Detail模板,Visual Studio 2019),我正在尝试以代码隐藏而不是详细视图中的XAML执行数据绑定,以便检索和显示“Description”条目: 因此,我修改了我的ItemDetailPage.xaml,如下所示(注释掉了该部分): 以便通过数据绑定显示“描述”条目。但是,除了在xaml文件中,我似乎无法访问相关的数据条目,这里是Models文件夹Items.cs中的“Description”Xamarin 使用主/详细模板在代码隐藏中绑定,xamarin,data-binding,code-behind,master-detail,Xamarin,Data Binding,Code Behind,Master Detail,我已经生成了一个Master/Detail view应用程序(通过Xamarin的Master Detail模板,Visual Studio 2019),我正在尝试以代码隐藏而不是详细视图中的XAML执行数据绑定,以便检索和显示“Description”条目: 因此,我修改了我的ItemDetailPage.xaml,如下所示(注释掉了该部分): 以便通过数据绑定显示“描述”条目。但是,除了在xaml文件中,我似乎无法访问相关的数据条目,这里是Models文件夹Items.cs中的“Descri
namespace MDDummy2.Models
{
public class Item
{
public string Id { get; set; }
public string Text { get; set; }
public string Description { get; set; }
}
}
和MockDataStore.cs(我打算在详细视图中显示描述条目所在的位置)
如何访问数据字段,例如代码隐藏中的“Description”,以便在详细视图中显示它?非常感谢你的帮助 什么是ItemDetailViewModel?您可以通过
testLabel.BindingContext=new{Description=“{binding Item.Description}”设置标签文本绑定我认为这是错误的
我做了一个关于使用代码隐藏绑定的示例,您可以看看:
public partial class Page8 : ContentPage
{
private ItemDetailViewModel viewmodel;
public Page8()
{
InitializeComponent();
viewmodel = new ItemDetailViewModel()
{
item = new Item() { Id = "1", Text = "this is item1", Description = "item class description" },
m1 = new model1() {Id="2",Text="this is model1",Description="model1 class description." }
};
var layout = new StackLayout
{
Spacing = 40,
Padding = new Thickness(20, 20, 20, 20),
Orientation = StackOrientation.Horizontal
};
var testLabel = new Label();
testLabel.SetBinding(Label.TextProperty, new Binding("Description",source:viewmodel.item) );
layout.Children.Add(testLabel);
var testLabel1 = new Label();
testLabel1.SetBinding(Label.TextProperty, new Binding("Description",source:viewmodel.m1));
layout.Children.Add(testLabel1);
Content = layout;
this.BindingContext = viewmodel;
}
}
public class Item
{
public string Id { get; set; }
public string Text { get; set; }
public string Description { get; set; }
}
public class model1
{
public string Id { get; set; }
public string Text { get; set; }
public string Description { get; set; }
}
public class ItemDetailViewModel
{
public Item item { get; set; }
public model1 m1 { get; set; }
}
为什么要将标签的BindingContrText设置为匿名对象,而不是使用传递到ItemDetailPage的ViewModel?谢谢!我很快就会试试的,我会让你知道有什么更新吗?是的,成功了!非常感谢!我使用了:testLabel.SetBinding(Label.TextProperty,新绑定(“Description”,来源:viewModel.Item));
namespace MDDummy2.Models
{
public class Item
{
public string Id { get; set; }
public string Text { get; set; }
public string Description { get; set; }
}
}
public partial class Page8 : ContentPage
{
private ItemDetailViewModel viewmodel;
public Page8()
{
InitializeComponent();
viewmodel = new ItemDetailViewModel()
{
item = new Item() { Id = "1", Text = "this is item1", Description = "item class description" },
m1 = new model1() {Id="2",Text="this is model1",Description="model1 class description." }
};
var layout = new StackLayout
{
Spacing = 40,
Padding = new Thickness(20, 20, 20, 20),
Orientation = StackOrientation.Horizontal
};
var testLabel = new Label();
testLabel.SetBinding(Label.TextProperty, new Binding("Description",source:viewmodel.item) );
layout.Children.Add(testLabel);
var testLabel1 = new Label();
testLabel1.SetBinding(Label.TextProperty, new Binding("Description",source:viewmodel.m1));
layout.Children.Add(testLabel1);
Content = layout;
this.BindingContext = viewmodel;
}
}
public class Item
{
public string Id { get; set; }
public string Text { get; set; }
public string Description { get; set; }
}
public class model1
{
public string Id { get; set; }
public string Text { get; set; }
public string Description { get; set; }
}
public class ItemDetailViewModel
{
public Item item { get; set; }
public model1 m1 { get; set; }
}