在我的Xamarin项目中。由于“ ContentView”,我想创建一个使用ListView的控件。我之所以使用ContentView方法,是因为我应该在项目中以模块化方式多次重复使用此控件元素。 我可以为视图的不同元素成功创建绑定属性。 但是我找不到方法来为绑定到我的Listview的动作创建Binding属性(例如,“轻按”)。我已经在其他ContentView中通过使用元素和EventHandlers的“命令”属性(例如Button.Command)来做到这一点。但是听起来ListView并没有实现这种特性。
这是我到目前为止用于ListView的代码
public partial class ItemSelectListView : ContentView
{
public static readonly BindableProperty ItemListViewProperty=
BindableProperty.Create("ItemListView", typeof(IEnumerable<Item>), typeof(ItemSelectListView), default(Item));
public IEnumerable<Item> ItemListView
{
get { return (IEnumerable<Item>)GetValue(ItemListViewProperty); }
set { SetValue(ItemListViewProperty, value); }
}
public static readonly BindableProperty TitleLabelProperty =
BindableProperty.Create("TitleLabel", typeof(string), typeof(ItemSelectListView), default(string));
public string TitleLabel
{
get { return (string)GetValue(TitleLabelProperty); }
set { SetValue(TitleLabelProperty, value); }
}
public ItemSelectListView ()
{
InitializeComponent ();
ListView.SetBinding(ListView.ItemsSourceProperty, new Binding("ItemListView", source: this));
Title.SetBinding(Label.TextProperty, new Binding("TitleLabel", source: this));
}
}
这是例如我用来创建无法为ListView复制的EventHandler的方式
public partial class ItemSelectButtonView : ContentView
{
public static readonly BindableProperty LeftButtonTextProperty =
BindableProperty.Create("LeftButtonText", typeof(string), typeof(ItemSelectButtonView), default(string));
public string LeftButtonText
{
get { return (string)GetValue(LeftButtonTextProperty);}
set { SetValue(LeftButtonTextProperty, value); }
}
public static readonly BindableProperty RightButtonTextProperty =
BindableProperty.Create("RightButtonText", typeof(string), typeof(ItemSelectButtonView), default(string));
public string RightButtonText
{
get { return (string)GetValue(RightButtonTextProperty); }
set { SetValue(RightButtonTextProperty, value); }
}
public event EventHandler RightButtonClicked;
public event EventHandler LeftButtonClicked;
public ItemSelectButtonView ()
{
InitializeComponent ();
LeftButton.SetBinding(Button.TextProperty, new Binding("LeftButtonText", source: this));
RightButton.SetBinding(Button.TextProperty, new Binding("RightButtonText", source: this));
LeftButton.Command = new Command(() =>
{
LeftButtonClicked?.Invoke(this, EventArgs.Empty);
});
RightButton.Command = new Command(() =>
{
RightButtonClicked?.Invoke(this, EventArgs.Empty);
});
}
}
那么如何用ListView获得相同的结果?
谢谢
答案 0 :(得分:0)
我最终可以按照以下方式进行操作。 不确定它是否是最干净的。
delay