【问题标题】:WPF Nested ListViews - selectedValue of parent ListViewWPF嵌套ListViews - 父ListView的selectedValue
【发布时间】:2012-12-13 15:55:17
【问题描述】:

我有两个列表视图,一个父视图包含一个子列表视图及其项目模板。

<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?我想我需要对事件路由做一些事情,但我不确定是什么。

【问题讨论】:

标签: c# wpf xaml listview


【解决方案1】:

好的,没想到您将数据绑定与手动填充混合在一起。我假设您的内部 Listview 使用选择事件。您必须在树中冒泡,直到您点击 TopView。在处理后将内部 Listview 处理程序中的 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;
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-08
    • 1970-01-01
    • 1970-01-01
    • 2010-09-15
    • 2020-03-21
    • 2010-11-13
    相关资源
    最近更新 更多