2014-01-17 7 views
0

항목 목록이 있습니다. 하나를 선택하면 appbar를 위로 슬라이드하고 싶습니다. 이것은 내가 지금까지 무엇을 가지고 :BottomAppBar 가시성 전환 작동하지 않습니까?

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

BookIsSelected :

private bool _bookSelected; 

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

내가 공격 가져 오기/설정을 볼 수있는 책의있는 gridview에서

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

,이 있습니다 나는 책을 선택하지만, 앱바는 결코 날아 가지 않습니다. 내가 도대체 ​​뭘 잘못하고있는 겁니까?

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

을하지만, 당신은 어떤 단계에서 다시 falseBookIsSelected 속성을 설정하지 않는 한,이 한 번만 작동합니다. SetProperty 메서드는 @Amer가 의견에서 언급 한대로 INotifyPropertyChanged interface 속성 변경을 알려야합니다. 연결된 페이지에서 다음과 같이 보입니다 :

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