簡體   English   中英

Windows Store應用程序:以編程方式從ListView中的樣式訪問控制

[英]Windows Store App: Programatically access control from style in ListView

我在ListView控件上使用了自定義樣式。 當用戶單擊ListView中的項目時,我開始下載文件,id喜歡更新該特定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的任何屬性/方法。

我全都沒主意了。 任何幫助表示贊賞。 謝謝。

ViewModel用於ListView每個項目。 因此,使它成為ObservableCollection<DownloadableContentViewModel<Model>>而不是ObservableCollection<Model>

然后,在此ViewModel ,為ProgressBar放入值,例如是否應顯示ProgressBar以及該值應為多少。 通過WrappedItem屬性之類的東西公開您的Model

您的Bindings將更改為Text="{Binding WrappedItem.Name}" ,但否則將以相同的方式工作。

另外,您應該在Wrapper ViewModel放置一個Command ,該Command開始下載並執行該邏輯。 然后,您可以將其綁定到ListViewItem內的按鈕。

希望對您有所幫助,編碼愉快!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM