C# 如何使用SelectionMode=Multiple从GridView获取选定控件

C# 如何使用SelectionMode=Multiple从GridView获取选定控件,c#,gridview,win-universal-app,windows-10-mobile,visual-studio-2015,C#,Gridview,Win Universal App,Windows 10 Mobile,Visual Studio 2015,我有这样一个GridView: <GridView x:Name="list" ScrollViewer.VerticalScrollBarVisibility="Hidden" SelectionChanged="list_SelectionChanged" ItemsSource="{x:Bind Wallpapers}" SelectionMode="Multiple"> <GridView.ItemTemplate> <DataTem

我有这样一个GridView:

<GridView x:Name="list" ScrollViewer.VerticalScrollBarVisibility="Hidden" SelectionChanged="list_SelectionChanged" ItemsSource="{x:Bind Wallpapers}" SelectionMode="Multiple">
    <GridView.ItemTemplate>
        <DataTemplate x:DataType="data:ImageItem">
            <StackPanel>
                <Image FlyoutBase.AttachedFlyout="{StaticResource ImageMenuFlyout}" Width="150" Height="90" Source="{x:Bind img}" Tag="{x:Bind TagIndex}" Holding="Image_Holding" Tapped="Image_Tapped"/>
                <Image Source="used.png" Height="15" Margin="0,-15,0,0" HorizontalAlignment="Left" Width="44" Visibility="{x:Bind Used, Mode=OneWay}"/>
            </StackPanel>
        </DataTemplate>
    </GridView.ItemTemplate>
</GridView>

我需要使用GrifView的OnSelectionChanged方法查看第二个图像控件的可见性


我之所以需要它,是因为如果用户选择了至少一个第二个图像控件可见性为“可见”的项目,我必须启用一个按钮。

尝试重新创建您的示例

我假设您有一个名为
ImageItem
的类。我仅使用
Used
属性创建了一个:

public class ImageItem
{
    public Visibility Used { get; set; }
}
我的视图与您的视图基本相同,我使用了不同的
itemsource
名称,只保留在第二个
图像
控件的
可见性
绑定中:

<GridView x:Name="list" ScrollViewer.VerticalScrollBarVisibility="Hidden" SelectionChanged="List_OnSelectionChanged" ItemsSource="{x:Bind Items}" SelectionMode="Multiple">
    <GridView.ItemTemplate>
        <DataTemplate x:DataType="local:ImageItem">
            <StackPanel>
                <Image Width="150" Height="90" />
                <Image Height="15" Margin="0,-15,0,0" HorizontalAlignment="Left" Width="44" Visibility="{x:Bind Used, Mode=OneWay}"  />
            </StackPanel>
        </DataTemplate>
    </GridView.ItemTemplate>
</GridView>

因此,如果您至少选择列表中的第一项和/或第二项,则
IsatleAstonivible
将为真;如果您仅选择第三项,则为假。

尝试重新创建示例

我假设您有一个名为
ImageItem
的类。我仅使用
Used
属性创建了一个:

public class ImageItem
{
    public Visibility Used { get; set; }
}
我的视图与您的视图基本相同,我使用了不同的
itemsource
名称,只保留在第二个
图像
控件的
可见性
绑定中:

<GridView x:Name="list" ScrollViewer.VerticalScrollBarVisibility="Hidden" SelectionChanged="List_OnSelectionChanged" ItemsSource="{x:Bind Items}" SelectionMode="Multiple">
    <GridView.ItemTemplate>
        <DataTemplate x:DataType="local:ImageItem">
            <StackPanel>
                <Image Width="150" Height="90" />
                <Image Height="15" Margin="0,-15,0,0" HorizontalAlignment="Left" Width="44" Visibility="{x:Bind Used, Mode=OneWay}"  />
            </StackPanel>
        </DataTemplate>
    </GridView.ItemTemplate>
</GridView>

因此,如果您至少选择列表中的第一项和/或第二项,则
IsatleAstonivible
为真;如果您仅选择第三项,则为假。

非常感谢,您完全理解我的意思。它工作正常。在哪里可以找到该代码的指南(I=>I.Used==Visibility.Visible),我不是很了解它。谢谢。这叫做lambda表达式,它们非常有用。MSDN链接:另一个简单的解释是:它像foreach cicle一样工作,或者这个lambda表达式在速度方面更好?非常感谢,你完全理解我的意思。它工作正常。在哪里可以找到该代码的指南(I=>I.Used==Visibility.Visible),我不是很了解它。谢谢。这叫做lambda表达式,它们非常有用。MSDN链接:另一个简单的解释是:它像foreach cicle一样工作,或者这个lambda表达式在速度方面更好?