0

アイテム テンプレートを含む子リスト ビューを含む親の 2 つのリスト ビューがあります。

<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 を使用しようとすると、返される値は常に null です。

親 ListView を、子 ListView の代わりに選択イベントを受け入れる唯一の ListView にするにはどうすればよいですか? イベントルーティングで何かをする必要があると思いますが、何がわかりません。

4

1 に答える 1

1

わかりました。データバインディングと手動入力を混在させることを期待していませんでした。あなたの内側のリストビューはselect-eventを消費すると思います。TopViewを押すまで、ツリー内でそれをバブルアップする必要があります。処理後に内部リストビューのハンドラーのe.handledプロパティをfalseに設定すると、次のリストビューiircのイベントが発生します。

private void handleInner(object o, RoutedEventArgs e)
{
    InnerControl innerControl = e.OriginalSource as InnerControl;
    if (innerControl  != null)
    {
        //do whatever
    }
    e.Handled = false;
}
于 2012-12-13T16:04:40.617 に答える