我想将我的DataTemplate(这是一个viewCell)中的一个按钮绑定到listView的页面的viewModel(这是bindingContext的页面)的命令。 我把模板放在另一个文件中,因为我想在其他地方重用它,这是主要问题 这是我页面中的listView。
_timeLineListView = new MR.Gestures.ListView
{
RowHeight = 230,
SeparatorVisibility = SeparatorVisibility.None,
ItemTemplate = new DataTemplate(typeof(TimeLineScheduleComponent)),
BackgroundColor = Color.FromHex("0D2E383F")
};
listView的ItemSource绑定到viewModel的属性
在TimeLineScheduleComponent中,我有一个按钮:
_acceptScheduleButton.SetBinding(MR.Gestures.Button.TappedCommandProperty, "ToLastStepTradeCommand");
_acceptScheduleButton.BindingContext = ParentBindingContext;
这是页面的viewModel,其中包含我要绑定的命令:
/// <summary>
/// Command schedule button
/// </summary>
public Command ToLastStepTradeCommand
{
get
{
return new Command(() =>
{
});
}
}
我尝试在viewCell中添加一个bindableProperty,如下所示:
public static BindableProperty ParentBindingContextProperty = BindableProperty.Create("ParentBindingContext",
typeof(object), typeof(TimeLineScheduleComponent));
public object ParentBindingContext
{
get { return GetValue(ParentBindingContextProperty); }
set { SetValue(ParentBindingContextProperty, value); }
}
在页面上我做了这个:
var test = new DataTemplate(typeof(TimeLineScheduleComponent));
test.SetBinding(TimeLineScheduleComponent.ParentBindingContextProperty, new Binding(BindingContextProperty.PropertyName));
test.BindingContext= this; //this is wrong I know ...
但是没有用,我在做最后一部分我做错了(我应该给我的测试dataTemplate哪个bindingContext?)。我在纯c#上发现了一些xaml解决方案,但很难翻译。
感谢。