我有一个HorizontalListView(来自SharpNado),我有一些按钮可以在不同的项目之间导航。我希望这些按钮仅在特定条件下可见(它们可以同时可见):
如果列表视图的当前索引大于0,则“上一个”按钮应该可见。如果列表视图的当前索引低于最高索引(计数-1),则我希望“下一个”按钮可见。
我想在视图之间(使用转换器)使用一些绑定来解决此问题。我设法通过一个转换器将“上一个”按钮的可见性绑定到当前索引,该转换器检查该索引是否大于0,但是我在“下一个”按钮上苦苦挣扎,因为当当前索引或列表中项目的数量更改。
我已经尝试了很多带有converterparameters的东西,但是无法绑定它们。我还尝试了一个转换器具有绑定的选项,但它甚至无法生成。
This是我正在使用的HorizontalListView,由于现在我对此不太了解,因此现在切换到其他选项为时已晚。
在这一点上,我真的不确定该怎么做,我希望这里有人可以帮助我。预先感谢。
编辑:
这是我要构建的控件。
答案 0 :(得分:1)
在您的ViewModel
中添加一个getter属性:
public bool IsLowerThanTheHighestIndex => this.MyIndex < this.MyList.Count - 1;
然后将按钮可见性绑定到该属性。
然后在需要的地方进行更改:
private int _myIndex;
public int MyIndex
{
get
{
return this._myIndex;
}
set
{
this._myIndex = value;
OnPropertyChanged(nameof(MyIndex));
OnPropertyChanged(nameof(IsLowerThanTheHighestIndex));
}
}
,并且您修改MyList
的所有地方也会引起更改,例如:
this.MyList.Add(...);
OnPropertyChanged(nameof(IsLowerThanTheHighestIndex));
如果您使用的是ObservableCollection<T>
,则可以订阅CollectionChanged
事件并在事件回调中调用OnPropertyChanged(nameof(IsLowerThanTheHighestIndex));
(请记住在最后取消订阅该事件)
HIH