同一页面上有多个bindingContext

时间:2017-07-31 09:13:40

标签: c# xamarin binding-context

我使用listview和headerTemplate。 我需要创建一个bindableproperty来向我的模板添加一个Text。

所以我在我的headertemplate“MyMenuHeader”中创建了一个可绑定属性:

public static readonly BindableProperty TitleTextproperty =
BindableProperty.Create("TitleText", typeof(String), typeof(MyMenuHeader), null);

public String TitleText
{
   get { return (String)GetValue(TitleTextproperty); }
   set {
         SetValue(TitleTextproperty, value);
         OnPropertyChanged("TitleText");
       }
}

var nomGroup = new Label
            {
                TextColor = Color.FromHex(ConstColor.PrimaryPrastel),
                HorizontalOptions = LayoutOptions.CenterAndExpand,
                FontSize = 15,
                HorizontalTextAlignment = TextAlignment.Start,
                VerticalOptions = LayoutOptions.Center,
            };
            nomGroup.SetBinding(Label.TextProperty, "TitleText");

BindingContext = this;

在我的列表视图中,我尝试使用“设置值”设置此属性:

 //Design des cellules de groupe 
 var cellGroup = new DataTemplate(typeof(MyMenuHeader));
 cellGroup.CreateContent();
 cellGroup.SetValue(MyMenuHeader.TitleTextproperty, _dataMenu._nomMenu);
 HeaderTemplate = cellGroup;

但我的属性已设置但从未显示在标签中。

致以最诚挚的问候,

编辑:我有一个新参数bindableproperty.create

 public static readonly BindableProperty TitleTextProperty =
 BindableProperty.Create("TitleText", typeof(String), typeof(MyRelaiTabCell), null, propertyChanged: OnTitleTextChanged);

        public String TitleText
        {
            get { return (String)GetValue(TitleTextProperty); }
            set { SetValue(TitleTextProperty, value); }
        }

这是这个函数,当属性改变时修改label的值:

static void OnTitleTextChanged(BindableObject bindable, object oldValue, object newValue)
{
    var menu = (bindable as MyRelaiTabCell);
    // Property changed implementation goes here
    menu._titleText.SetValue(Label.TextProperty, (newValue as String));
}

它的工作只是以一种方式。视图模型 - > viewcell。所以当我设定价值。当我尝试在改变时获得价值时,我没有信息。

0 个答案:

没有答案