1

我在我的 ListView 控件上使用自定义样式。当用户单击 ListView 中的项目时,我开始下载文件,我想更新该特定 ListViewItem 上的进度条。这是我正在使用的样式:

<DataTemplate x:Key="UpdatesListViewItemTemplate">
    <Grid Height="80">
        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="6*"/>
            <ColumnDefinition Width="*"/>
        </Grid.ColumnDefinitions>
        <StackPanel Margin="5,0,10,5">
            <TextBlock Text="{Binding Name}" Style="{StaticResource ListViewTitleTextStyle}" TextWrapping="NoWrap" Margin="0, 2"/>
            <TextBlock Text="{Binding Description}" Style="{StaticResource ListViewDetailTextStyle}" TextWrapping="NoWrap" Margin="0, 2"/>
            <TextBlock Text="{Binding Date}" Style="{StaticResource ListViewDetailTextStyle}" TextWrapping="NoWrap" Margin="0, 2"/>
        </StackPanel>
        <ProgressBar x:Name="progressBar" Grid.Column="1" Margin="5, 0" />
    </Grid>
</DataTemplate>

以下是我尝试过的一些事情:

  • 将名为 DownloadProgress 的属性绑定到进度条的 Value 属性。有没有办法可以更新特定的 ListViewItem 以便它重新获取 Binding 值?
  • 尝试从传递给 ItemClick 方法的发送者对象访问 ListViewItem。我找不到任何返回 ListViewItem 的属性/方法。

我完全没主意了。任何帮助表示赞赏。谢谢。

4

1 回答 1

0

ViewModelListView. _ 所以,而不是ObservableCollection<Model>,让它ObservableCollection<DownloadableContentViewModel<Model>>

然后,在 this 中ViewModel,为 设置值ProgressBar,例如是否ProgressBar应该显示 以及该值应该是什么。Model通过类似WrappedItem财产的方式公开您的信息。

您的Bindings遗嘱将更改为Text="{Binding WrappedItem.Name}",但将以相同的方式工作。

此外,您应该在其中放置一个Command开始Wrapper ViewModel下载并执行该逻辑的内容。然后,您可以将其绑定到ListViewItem.

希望这会有所帮助,快乐的编码!

于 2013-08-01T21:39:41.883 回答