C# 从嵌套列表视图中选择EditEMS

C# 从嵌套列表视图中选择EditEMS,c#,listview,windows-phone-8.1,windows-store-apps,winrt-xaml,C#,Listview,Windows Phone 8.1,Windows Store Apps,Winrt Xaml,我正在开发一个Windows应用商店应用程序,其中有一个嵌套的listview,即可扩展的listview。要在子listview中保留所选项目,我使用了 <ListView Name="FiltersListview" ItemContainerStyle="{StaticResource StretchItemStyle}" SelectionChanged="FiltersListview_SelectionChanged" IsItemClickEnabled="True" Ite

我正在开发一个Windows应用商店应用程序,其中有一个嵌套的listview,即可扩展的listview。要在子listview中保留所选项目,我使用了

<ListView Name="FiltersListview" ItemContainerStyle="{StaticResource StretchItemStyle}" SelectionChanged="FiltersListview_SelectionChanged" IsItemClickEnabled="True" ItemClick="FiltersListview_ItemClick" Grid.Row="1" Grid.ColumnSpan="2">
    <ListView.ItemTemplate>
        <DataTemplate>
            <Grid>
                <Interactivity:Interaction.Behaviors>
                    <Core:DataTriggerBehavior Binding="{Binding IsSelected}" Value="True">
                        <Core:ChangePropertyAction TargetObject="{Binding ElementName=view1}" PropertyName="Visibility" Value="Collapsed"/>
                        <Core:ChangePropertyAction TargetObject="{Binding ElementName=view2}" PropertyName="Visibility" Value="Visible"/>
                    </Core:DataTriggerBehavior>
                    <Core:DataTriggerBehavior Binding="{Binding IsSelected}" Value="False">
                    <Core:ChangePropertyAction TargetObject="{Binding ElementName=view1}" PropertyName="Visibility" Value="Visible"/>
                        <Core:ChangePropertyAction TargetObject="{Binding ElementName=view2}" PropertyName="Visibility" Value="Collapsed"/>
                    </Core:DataTriggerBehavior>
                </Interactivity:Interaction.Behaviors>
                <Grid Height="50" x:Name="view1">
                    <Grid.ColumnDefinitions>
                        <ColumnDefinition Width="3*"/>
                        <ColumnDefinition Width="*"/>
                    </Grid.ColumnDefinitions>
                    <TextBlock Text="{Binding Name}" VerticalAlignment="Center" Style="{StaticResource PageTextStyle}"/>
                    <Image Margin="10" Grid.Column="1" Source="/Images/arrow-down.png"/>
                    <Rectangle Fill="Black" VerticalAlignment="Bottom" Height="1" Grid.ColumnSpan="2"/>
                </Grid>
                <Grid x:Name="view2">
                    <Grid.ColumnDefinitions>
                        <ColumnDefinition Width="3*"/>
                        <ColumnDefinition Width="*"/>
                    </Grid.ColumnDefinitions>
                    <Grid.RowDefinitions>
                        <RowDefinition Height="50"/>
                        <RowDefinition/>
                    </Grid.RowDefinitions>
                    <TextBlock Text="{Binding Name}" VerticalAlignment="Center" Style="{StaticResource PageTextStyle}"/>
                    <Image Margin="10" Grid.Column="1" Source="/Images/arrow-up.png"/>
                    <ListView Margin="20,0" Grid.Row="1" RequestedTheme="Light" Grid.ColumnSpan="2" ItemsSource="{Binding SubList}" SelectionMode="Multiple">
                        <ListView.ItemContainerStyle>
                            <Style TargetType="ListViewItem">
                                <Setter Property="HorizontalContentAlignment" Value="Stretch"/>
                                <Setter Property="FontSize" Value="22"/>
                                <Setter Property="VerticalContentAlignment" Value="Center"/>
                                <Setter Property="Foreground" Value="Black"/>
                            </Style>
                        </ListView.ItemContainerStyle>
                    </ListView>
                </Grid>
            </Grid>
        </DataTemplate>
    </ListView.ItemTemplate>
</ListView>
在我以前的问题之后,我改变了这个问题 但现在点击一个名为Go的按钮,我想知道每个项目的子ListView中的所有选定项目。我偶然发现了一些链接,但我没有使用MVVM,无法在我的案例中使用它


有人能帮忙吗?

我已经想出了解决这个问题的办法。如果有人需要我的解决方案,我会把它放进去

我已将子listview作为参数传递给ViewModel,并在命令的帮助下对其进行了管理

    <ListView ItemContainerStyle="{StaticResource StretchItemStyle}" SelectionChanged="FiltersListview_SelectionChanged" IsItemClickEnabled="True" ItemClick="FiltersListview_ItemClick" Grid.Row="1" Grid.ColumnSpan="2" Margin="-1,0,1,44" Grid.RowSpan="2">
        <ListView.ItemTemplate>
            <DataTemplate>
                <Grid>
                    <Interactivity:Interaction.Behaviors>
                        <Core:DataTriggerBehavior Binding="{Binding IsSelected}" Value="True">
                            <Core:ChangePropertyAction TargetObject="{Binding ElementName=view1}" PropertyName="Visibility" Value="Collapsed"/>
                            <Core:ChangePropertyAction TargetObject="{Binding ElementName=view2}" PropertyName="Visibility" Value="Visible"/>
                        </Core:DataTriggerBehavior>
                        <Core:DataTriggerBehavior Binding="{Binding IsSelected}" Value="False">
                            <Core:ChangePropertyAction TargetObject="{Binding ElementName=view1}" PropertyName="Visibility" Value="Visible"/>
                            <Core:ChangePropertyAction TargetObject="{Binding ElementName=view2}" PropertyName="Visibility" Value="Collapsed"/>
                        </Core:DataTriggerBehavior>
                    </Interactivity:Interaction.Behaviors>
                    <Grid Height="50" x:Name="view1">
                        <Grid.ColumnDefinitions>
                            <ColumnDefinition Width="3*"/>
                            <ColumnDefinition Width="*"/>
                        </Grid.ColumnDefinitions>
                        <TextBlock Text="{Binding Name}" VerticalAlignment="Center" Style="{StaticResource PageTextStyle}"/>
                        <Image Margin="10" Grid.Column="1" Source="/Images/arrow-down.png"/>
                        <Rectangle Fill="Black" VerticalAlignment="Bottom" Height="1" Grid.ColumnSpan="2"/>
                    </Grid>
                    <Grid x:Name="view2">
                        <Grid.ColumnDefinitions>
                            <ColumnDefinition Width="3*"/>
                            <ColumnDefinition Width="*"/>
                        </Grid.ColumnDefinitions>
                        <Grid.RowDefinitions>
                            <RowDefinition Height="50"/>
                            <RowDefinition/>
                        </Grid.RowDefinitions>
                        <TextBlock Text="{Binding Name}" VerticalAlignment="Center" Style="{StaticResource PageTextStyle}"/>
                        <Image Margin="10" Grid.Column="1" Source="/Images/arrow-up.png"/>
                        <ListView x:Name="SubListview" Margin="20,0" Grid.Row="1" RequestedTheme="Light" Grid.ColumnSpan="2" ItemsSource="{Binding SubList}" SelectionMode="Multiple">
                            <ListView.ItemContainerStyle>
                                <Style TargetType="ListViewItem">
                                    <Setter Property="HorizontalContentAlignment" Value="Stretch"/>
                                    <Setter Property="FontSize" Value="22"/>
                                    <Setter Property="VerticalContentAlignment" Value="Center"/>
                                    <Setter Property="Foreground" Value="Black"/>
                                </Style>
                            </ListView.ItemContainerStyle>
                            <Interactivity:Interaction.Behaviors>
                                <Core:EventTriggerBehavior EventName="SelectionChanged">
                                    <Core:InvokeCommandAction Command="{Binding SelectionChangedCommand}" CommandParameter="{Binding ElementName=SubListview}"/>
                                    <!--<Core:InvokeCommandAction Command="{Binding SelectionChangedCommand}" InputConverter="{StaticResource SelectionChangedConverter}" InputConverterParameter="{Binding ElementName=SubListview}"/>-->
                                </Core:EventTriggerBehavior>
                            </Interactivity:Interaction.Behaviors>
                        </ListView>
                        <Rectangle Grid.Row="1" Fill="Black" VerticalAlignment="Bottom" Height="1" Grid.ColumnSpan="2"/>
                    </Grid>
                </Grid>
            </DataTemplate>
        </ListView.ItemTemplate>
    </ListView>

在代码背后

private void FiltersListview_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
    try
    {
        var item = (sender as ListView).SelectedItem as FilterM;
        if (item != null)
            item.IsSelected = true;
        if (e.RemovedItems.Count > 0)
        {
            foreach (var Nitem in e.RemovedItems)
            {
                (Nitem as FilterM).IsSelected = false;
            }
        }
    }
    catch (Exception ex)
    {
        System.Diagnostics.Debug.WriteLine(ex.Message);
    }
}

private void FiltersListview_ItemClick(object sender, ItemClickEventArgs e)
{
    try
    {
        if ((sender as ListView).SelectedItem != null)
        {
            if ((sender as ListView).SelectedItem.Equals(e.ClickedItem))
                (sender as ListView).SelectedItem = null;
            else
                (sender as ListView).SelectedItem = e.ClickedItem;
        }
        else
            (sender as ListView).SelectedItem = e.ClickedItem;
    }
    catch (Exception ex)
    {
        System.Diagnostics.Debug.WriteLine(ex.Message);
    }
}
public class FilterM
{
public RelayCommand<IList<object>> SelectionChangedCommand  
{
    get
    {
        if (selectionChangedCommand == null)
        {
            selectionChangedCommand = new RelayCommand<IList<object>>(
                items =>
                {
                    // do something with selected items!
                }
            );
        }

        return selectionChangedCommand;
    }
}
}
公共类过滤器项
{
公共关系命令选择更改命令
{
得到
{
如果(selectionChangedCommand==null)
{
selectionChangedCommand=新建中继命令(
项目=>
{
//对选定的项目执行某些操作!
}
);
}
返回selectionChangedCommand;
}
}
}
并设置第一个listview的itemssource。我有这个想法,希望它能帮助像我这样的人