获取DataTemplate中listview页面的bindingContext

时间:2017-11-10 12:33:07

标签: forms xamarin binding command datatemplate

我想将我的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解决方案,但很难翻译。

感谢。

0 个答案:

没有答案