我有两个列表视图,一个包含子列表视图及其项目模板的父视图。
<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?我想我需要做一些事件路由,但我不确定是什么。
答案 0 :(得分:1)
好的,没想到你将数据绑定与手动填充混合在一起。我假设您的内部Listview使用select-event。你必须在树中泡一个,直到你点击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;
}