切换BottomAppBar可见性不起作用?

时间:2014-01-17 17:05:05

标签: xaml prism

我有一个项目列表 - 当选择一个项目时,我想向上滑动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永远不会飞出来。我做错了什么?

1 个答案:

答案 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));
    }
}