2014-01-17 83 views
0

我有一個項目列表 - 當選擇一個,我想滑動應用程序了。這是我到目前爲止有:切換BottomAppBar可見性不起作用?

<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> 

在書的gridview的,我有這樣的:

SelectedItem ="{Binding SelectedBook, Mode = TwoWay}" /> 

BookIsSelected:

private bool _bookSelected; 

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

我能看到的get/set擊中時我選擇了一本書,但appbar從不飛出。我究竟做錯了什麼?

+0

你在哪裏觸發'BookIsSelected'屬性的'PropertyChanged'事件? – Amer

+0

@Amer,我想象那是在'SetProperty'方法中...但是如果不是的話,那麼你就是解決方案。 – Sheridan

回答

1

到目前爲止,我看不到任何明顯的代碼問題。但是,您尚未顯示SelectedBook屬性或SetProperty方法的代碼,因此您的問題可能存在嗎?你SelectedBook屬性應該是這個樣子,設置BookIsSelectedtrue

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