2012-12-13 101 views
0

我有兩個列表視圖,一個包含子項目視圖及其項目模板的父項。WPF嵌套列表視圖 - 父列表視圖的selectedValue

<ListView Name="TopView"> 
    <ListView.ItemTemplate> 
     <DataTemplate> 
      <ListView ItemsSource="{Binding SubList}"Focusable="False"> 
        <ListView.Background> 
         <SolidColorBrush Color="Transparent"/>             
        </ListView.Background> 
        <ListView.ItemTemplate> 
         <DataTemplate> 
          <Grid HorizontalAlignment="Stretch"> 
           <Grid.ColumnDefinitions> 
            <ColumnDefinition Width="50" /> 
            <ColumnDefinition Width="50" /> 
            <ColumnDefinition /> 
           </Grid.ColumnDefinitions> 
           <TextBlock Text="{Binding Path=Number}" Grid.Column="0" /> 
           <TextBlock Text="{Binding Path=Type}" Grid.Column="1" /> 
           <TextBlock Text="{Binding Path=Code}" Grid.Column="2" /> 
          </Grid> 
         </DataTemplate> 
        </ListView.ItemTemplate> 
      </ListView> 
     </DataTemplate> 
    </ListView.ItemTemplate> 
</ListView> 

每當嘗試使用TopView.SelectedValue時,返回的值始終爲空。

如何讓父ListView成爲唯一的ListView來接受選擇事件而不是子ListView?我想我需要做一些事件路由,但我不知道是什麼。

+0

你沒有爲你的外部listview定義的itemsource,所以它會返回null。 Whatelse應該回來嗎? – dognose

+0

@dognose我通過TopView.Items.Add手動添加項目到構造函數中的頂部列表視圖,所以我想它會通過該集合返回選定的項目\值。 –

+0

您可以參考[數據綁定XAML中的嵌套集合(WPF和Silverlight) - WebX - 網站首頁 - MSDN博客](http://blogs.msdn.com/b/harryh/archive/2010/06/12/nested-集合,數據綁定功能於XAML的WPF和-silverlight.aspx) –

回答

1

好的,沒想到你將數據綁定和手動填充混合在一起。我假設你的內部Listview使用select事件。你必須在樹中泡一個,直到你點擊TopView。將內部Listview處理程序中的e.handled屬性設置爲false,然後處理它應該引發下一個listview iirc的事件。

private void handleInner(object o, RoutedEventArgs e) 
{ 
    InnerControl innerControl = e.OriginalSource as InnerControl; 
    if (innerControl != null) 
    { 
     //do whatever 
    } 
    e.Handled = false; 
}