我有一个项目列表 - 当选择一个项目时,我想向上滑动appbar。这就是我到目前为止所做的:
<AppBar IsOpen="{Binding BookIsSelected}">
<Grid>
<StackPanel Orientation="Horizontal" HorizontalAlignment="Right">
<AppBarButton Icon="Remove" Label="Remove Book" Command="{Binding RemoveBook}" Visibility="{Binding BookIsSelected, Mode=TwoWay, Converter={StaticResource BooleanToVisibilityConverter}}" />
</StackPanel>
</Grid>
</AppBar>
在书籍的网格视图中,我有这个:
SelectedItem ="{Binding SelectedBook, Mode = TwoWay}" />
BookIsSelected:
private bool _bookSelected;
public bool BookIsSelected {
get {
return _bookSelected;
}
set {
SetProperty(ref _bookSelected, value);
}
}
当我选择一本书时,我可以看到获取/设置命中,但appbar永远不会飞出来。我做错了什么?
答案 0 :(得分:1)
到目前为止,我看不到任何明显的代码问题。但是,您没有显示SelectedBook
属性或SetProperty
方法的代码,所以也许您的问题存在于那里?您的SelectedBook
媒体资源应如下所示,将BookIsSelected
设为true
:
private YourDataType _selectedBook;
public YourDataType SelectedBook{
get {
return _selectedBook;
}
set {
SetProperty(ref _selectedBook, value);
BookIsSelected = true;
}
}
但是,除非您在某个阶段将BookIsSelected
属性设置回false
,否则只能执行一次。您的SetProperty
方法应该通知INotifyPropertyChanged
interface属性更改,如@Amer在评论中提到的那样。它应该看起来像链接页面中的这个例子:
private void SetProperty([CallerMemberName] String propertyName = "")
{
if (PropertyChanged != null)
{
PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
}
}