如何从 ListViewItem 获取 ProgressRing?

问题描述

我有一个带有以下 ItemTemplate 的 ListView

<ListView.ItemTemplate>
                <DataTemplate x:DataType="model:SubsceneDownloadModel">
                    <UserControl PointerEntered="ListViewSwipeContainer_PointerEntered" 
                                 PointerExited="ListViewSwipeContainer_PointerExited">
                        
                        <Grid AutomationProperties.Name="{x:Bind Name}">
                            <SwipeControl x:Name="ListViewSwipeContainer" >
                                <Grid VerticalAlignment="Center">
                                    <Grid.RowDeFinitions>
                                        <RowDeFinition Height="auto"/>
                                        <RowDeFinition Height="auto"/>
                                    </Grid.RowDeFinitions>
                                    <TextBlock Text="{x:Bind Name}" 
                                               Margin="10,5,10,5" 
                                               FontSize="18" 
                                               HorizontalAlignment="Left" 
                                               VerticalAlignment="Center"/>

                                    <AppBarButton x:Name="DownloadHoverButton"
                                                  Margin="10,0"
                                                  HorizontalAlignment="Right"    
                                                  IsTabStop="False" 
                                                  Visibility="Collapsed"
                                                  Label="Download"
                                                  Icon="Download"
                                                  Click="DownloadHoverButton_Click"/>
                                   <ProgressRing x:Name="prgStatus"/>
                                </Grid>
                            </SwipeControl>
                        </Grid>
                    </UserControl>
                </DataTemplate>
            </ListView.ItemTemplate>

我希望在单击 AppBarButton 时更改 ProgressRing 的值,但问题是 AppBarButton 无法从项目模板访问,那么我如何从项目模板访问 progressring?

解决方法

将您的项目模板移动到新的用户控件

<UserControl
    Name="subsceneView"
    x:Class="HandySub.UserControls.SubsceneUserControl"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
    mc:Ignorable="d"
    PointerEntered="UserControl_PointerEntered"
    PointerExited="UserControl_PointerExited">
    
    <Grid>
       
        <SwipeControl x:Name="ListViewSwipeContainer" >
            <Grid AutomationProperties.Name="{x:Bind Name}">
                            <SwipeControl x:Name="ListViewSwipeContainer" >
                                <Grid VerticalAlignment="Center">
                                    <Grid.RowDefinitions>
                                        <RowDefinition Height="auto"/>
                                        <RowDefinition Height="auto"/>
                                    </Grid.RowDefinitions>
                                    <TextBlock Text="{x:Bind Name}" 
                                               Margin="10,5,10,5" 
                                               FontSize="18" 
                                               HorizontalAlignment="Left" 
                                               VerticalAlignment="Center"/>

                                    <AppBarButton x:Name="DownloadHoverButton"
                                                  Margin="10,0"
                                                  HorizontalAlignment="Right"    
                                                  IsTabStop="False" 
                                                  Visibility="Collapsed"
                                                  Label="Download"
                                                  Icon="Download"
                                                  Click="DownloadHoverButton_Click"/>
                                   <ProgressRing x:Name="prgStatus"/>
                                </Grid>
                            </SwipeControl>
                        </Grid>
        </SwipeControl>
    </Grid>
</UserControl>

并在您的列表视图中

<ListView.ItemTemplate>
                <DataTemplate x:DataType="model:SubsceneDownloadModel">
                    <usercontrol:SubsceneUserControl/>
                </DataTemplate>
            </ListView.ItemTemplate>

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...