Xaml 切换底部AppBar可见性不工作?

Xaml 切换底部AppBar可见性不工作?,xaml,prism,Xaml,Prism,我有一个项目列表-选择一个项目后,我想向上滑动appbar。这就是我到目前为止所做的: <AppBar IsOpen="{Binding BookIsSelected}"> <Grid> <StackPanel Orientation="Horizontal" HorizontalAlignment="Right"> <AppBarButton Icon="Remove" L

我有一个项目列表-选择一个项目后,我想向上滑动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>
选举:

    private bool _bookSelected;

    public bool BookIsSelected {
        get {
            return _bookSelected;
        }
        set {
            SetProperty(ref _bookSelected, value);
        }
    }

当我选择一本书时,我可以看到get/set点击,但是appbar永远不会飞出。我做错了什么?

到目前为止,我看不出您显示的代码有任何明显的问题。但是,您尚未显示
SelectedBook
属性或
SetProperty
方法的代码,因此您的问题可能就在这里?您的
SelectedBook
属性应如下所示,将
BookIsSelected
设置为
true

private YourDataType _selectedBook;

public YourDataType SelectedBook{
    get {
        return _selectedBook;
    }
    set {
        SetProperty(ref _selectedBook, value);
        BookIsSelected = true;
    }
}
但是,除非在某个阶段将
BookIsSelected
属性设置回
false
,否则这只会工作一次。您的
SetProperty
方法应该通知属性更改,如注释中提到的@Amer。在链接页面中,它应该类似于以下示例:

private void SetProperty([CallerMemberName] String propertyName = "")
{
    if (PropertyChanged != null)
    {
        PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
    }
}

你在哪里为
BookIsSelected
属性触发
PropertyChanged
事件?@Amer,我想那是在
SetProperty
方法中。。。但如果不是,那么你就找到了解决方案。
private void SetProperty([CallerMemberName] String propertyName = "")
{
    if (PropertyChanged != null)
    {
        PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
    }
}