【发布时间】:2018-07-07 12:50:09
【问题描述】:
我已将我的ViewCell 从 list-xaml 转移到一个单独的,现在我很难绑定属性。
我的ListView 的项目来源是“会员”的ObservableCollection。
public class Member
{
public string Name { get; set; }
public string Image { get; set; }
public string Description { get; set; }
}
所以现在我想弄清楚如何在我的 MemberViewCell 中使用可绑定属性。
我阅读的示例非常简单,我为 Name 创建了一个 BindableProperty 以及为 Name 创建了一个普通属性,当 Name 被修改时,它将触发图形更新。
我可以使用 Member 的基础创建一个 BindableProperty,这样我就不需要为我想要公开的每个属性编写所有这些可绑定/属性更改了吗?
类似这样的:
public static readonly BindableProperty MemberSource = BindableProperty.Create("Member", typeof(Member), typeof(ListViewMemberCell), null, defaultBindingMode: BindingMode.OneWay, propertyChanged: MemberSourcePropertyChanged);
public Member Member
{
get { return GetValue(MemberSource) as Member; }
set
{
SetValue(MemberSource, value);
}
}
private static void MemberSourcePropertyChanged(BindableObject bindable, object oldValue, object newValue)
{
ListViewMemberCell cell = (ListViewMemberCell)bindable;
/// Set the different properties to my labels/images based on member.
}
当然,我首先尝试了这个,但正如预期的那样,我得到了一个编译错误(在这个组件的使用者中)。
<ListView.ItemTemplate>
<DataTemplate>
<memberCell:ListViewMemberCell Member="{Bindable}"/>
</DataTemplate>
</ListView.ItemTemplate>
所以,{Bindable} 感觉不对,错误也是如此,但是当我在 DataTemplate 中有 ViewCell 时,我所做的是像这样绑定 {Bindable Name} /// Member.Name...
我希望只是我误解了这些例子..
【问题讨论】:
-
你想要什么?为什么需要会员扩展
ViewCell?我很确定你在这里混合了东西 -
我不希望 Member 扩展 ViewCell,但我想将我的成员对象传递给我的 ViewCell 以呈现内容(如 XAML 中所述)。我想要我自己的 ViewCell 文件的原因是我需要大量重复使用它。
-
好的,我现在明白了。
标签: xaml xamarin.forms xamarin.forms.listview