2012-05-12 3 views
2

AppBar과 함께 목록보기 다중 선택 시나리오를 구현하는 가장 간단한 방법은 무엇입니까? 여러 항목을 선택한 경우 (예 : 마우스 오른쪽 버튼 클릭) Windows 8 시작 화면과 똑같이 작동합니다.ListView 및 AppBar 협력. 가능한 가장 단순한 다중 선택 시나리오

첫 번째 선택된 목록보기 항목과 함께 앱 표시 줄을 표시하고 싶습니다. 앱 표시 줄을 두 번째, 세 번째 등으로 열어두기를 원하며 모든 앱 표시 줄 버튼 동작 (컨텍스트 동작 수행) 또는 다른 시스템 전체 응용 프로그램 모음 닫기 작업 (예 : 다른 작업을 마우스 오른쪽 단추로 클릭하면 상황에 따른 작업이 취소됨)을 의미합니다.

현재 구현이 너무 복잡합니다. 나는 뭔가를 놓쳐 버렸음에 틀림 없다고 믿습니다. 표준적이고 공통된 시나리오가 표준화 된 방식으로 구현 될 수 있어야합니다.

아래에서 준비한 스 캐 폴딩 코드. 이 코드 만 앱 표시 줄에 숨겨져 있기 전에 두 번째 목록보기 항목을 마우스 오른쪽 버튼으로 클릭하고 목록보기에서 한 번 더 마우스 오른쪽 버튼을 클릭해야합니다 (허용되지 않음). IsSticky와 결합하면 두 번째 목록보기 항목을 전혀 선택할 수 없습니다.

<Page 
    x:Class="ListViewAndAppBar.ExamplePage" 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    xmlns:local="using:ListViewAndAppBar" 
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
    mc:Ignorable="d" 
    DataContext="{Binding ExamplePageViewModel, Source={StaticResource Locator}}"> 

    <Grid Background="Gray"> 
     <ListView 
      x:Name="ListView" 
      ItemsSource="{Binding Persons}" 
      SelectionMode="Multiple" 
      SelectionChanged="ListView_SelectionChanged"> 
     </ListView> 
    </Grid> 

    <Page.BottomAppBar> 
     <AppBar x:Name="BottomAppBar" Padding="10,0,10,0"> 
      <Button x:Name="BottomAppBarBack" Tag="Back" Style="{StaticResource BackAppBarButtonStyle}" HorizontalAlignment="Left" /> 
     </AppBar> 
    </Page.BottomAppBar> 
</Page> 

private void ListView_SelectionChanged(object sender, SelectionChangedEventArgs e) 
{ 
    this.BottomAppBar.IsOpen = true; 
    //this.BottomAppBar.IsSticky = true; 
} 

답변

9

내 질문에 답하는 중. 내가 질문을 게시 한 후 해결책을 찾지 못했습니다. 누군가 초보자의 실수를 저지른다면 여기에 남겨 둘 것입니다.

해결책은 더 간단 할 수 없습니다. IsSticky는 IsOpen보다 먼저 호출해야합니다 (). 이 전환 후 모두 예상대로 작동합니다.

private void ListView_SelectionChanged(object sender, SelectionChangedEventArgs e) 
{ 
    if (this.ListBox.SelectedItems.Count > 0) 
    { 
     this.BottomAppBar.IsSticky = true; 
     this.BottomAppBar.IsOpen = true; 
    } 
    else 
    { 
     this.BottomAppBar.IsOpen = false; 
     this.BottomAppBar.IsSticky = false; 
    } 

    // Or the following if you wish... 
    // this.BottomAppBar.IsOpen = this.BottomAppBar.IsSticky = this.ListView.SelectedItems.Count > 0; 
} 
+0

감사합니다. Jan! 나는 똑같은 정확한 문제를 다루고 있었고 IsSticky = true와 IsOpen = true의 할당 순서를 변경해도 나를 위해 그것을 고쳤다. –