2013-08-20 173 views
3

在我的程序中,我目前有一個帶修改的行模板的數據網格,它顯示了一個列表視圖。因此,當用戶在數據網格中選擇一行時,該行將展開並顯示列表視圖,並且當用戶選擇不同的行時,原始列表將摺疊並且新行的列表將展開。我現在被要求讓它允許擴展多個列表視圖,但我不確定如何做到這一點。如何在數據網格中顯示多個列表視圖

我的XAML代碼:

<DataGrid ItemsSource="{Binding Path=Accounts}" SelectedItem="{Binding Path=SelectedAccount}" AutoGenerateColumns="False" 
       CanUserAddRows="False" CanUserDeleteRows="False" Width="Auto"> 
     <DataGrid.RowDetailsTemplate> 
      <DataTemplate> 
       <ListView MaxHeight="200" ItemsSource="{Binding Path=DataContext.SelectedAccount.Details, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type Window}}}" 
          SelectedItem="{Binding Path=DataContext.SelectedDetail, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type Window}}}" 
          Tools:GridViewSort.AutoSort="True" > 
        <ListView.View> 
         <GridView> 
          <GridViewColumn Header="Account" DisplayMemberBinding="{Binding Path=AccountCode}" 
              Tools:GridViewSort.PropertyName="AccountCode" Width="Auto" /> 

          <GridViewColumn Header="Description" DisplayMemberBinding="{Binding Path=Description}" 
              Tools:GridViewSort.PropertyName="Description" Width="Auto"/>         
         </GridView> 
        </ListView.View> 
        <ListView.Style> 
         <Style TargetType="ListView"> 
          <Style.Triggers> 
           <DataTrigger Binding="{Binding Path=DataContext.SelectedAccount.Details.Count, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type Window}}}" Value="0"> 
            <Setter Property="Visibility" Value="Collapsed" /> 
           </DataTrigger> 
          </Style.Triggers> 
         </Style> 
        </ListView.Style> 
       </ListView> 
      </DataTemplate> 
     </DataGrid.RowDetailsTemplate> 
     <DataGrid.Columns> 
      <DataGridTextColumn Header="Account" Binding="{Binding Path=AccountCode}"/> 
      <DataGridTextColumn Header="Title" Binding="{Binding Path=AccountTitle}" /> 
     </DataGrid.Columns> 
    </DataGrid> 

所以我在我的DataGrid中顯示的賬戶列表,以及每個賬戶有其是在當選擇一個帳戶出現的列表視圖中顯示的詳細信息列表。當我選擇其他賬戶時,如何保持listview中最初選擇的賬戶的詳細信息可見?

+0

你期待什麼?如果RowDetails在其他行被選中後仍然可見 – ethicallogics

+0

你就是我想要的 – emybob

回答

0

如果您希望先前選定的行的detailsTemplate保持可見,您可以嘗試這樣做。您訂閱的RowDetailsVisibilityChanged事件的DataGrid像

<DataGrid RowDetailsVisibilityChanged="DataGrid_RowDetailsVisibilityChanged_1"> 
     ....... 
     ........ 
    </DataGrid> 

private void DataGrid_RowDetailsVisibilityChanged_1(object sender, DataGridRowDetailsEventArgs e) 
    { 
     e.Row.DetailsVisibility= Visibility.Visible; 
    } 

我希望這將有助於。

相關問題