如何引用 WPF 嵌套 ListView 中的控件?
How do I refer to a control in a WPF nested ListView?
我的XAML:
<ListView x:Name="lvAlbums" ItemsSource="{Binding XPath=/downloads/Album}" SelectionMode="Multiple">
<ListView.ItemTemplate>
<DataTemplate>
<StackPanel x:Name="spAlbum">
<!-- Displays first level attributes -->
<TextBlock x:Name="AlbumName" Text="{Binding XPath=@Name}"/>
<TextBlock x:Name="AlbumArtist" Text="{Binding XPath=@Artist}"/>
<ListView x:Name="lvTracks" ItemsSource="{Binding XPath=Item}">
<ListView.ItemTemplate>
<DataTemplate>
<StackPanel x:Name="spTrack">
<!-- Displays the second level attributes -->
<TextBlock x:Name="trackName" Text="{Binding XPath=@Name}"/>
<ProgressBar x:Name="pb1" Minimum="0" Maximum="100" Height="5px" Margin="0,0,0,0"/>
</StackPanel>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
</StackPanel>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
它从 xml 文件中填充得很好。我有一张专辑,下面列出了曲目和每首曲目的进度条。
我现在正在通过 XML 循环下载每首曲目。如何引用进度条?
(进度条)lvAlbums[curAlbum].lvTracks[curTrack].spTrack["pb1"]
类似的东西。
请看看这是否适合您:
var innerListView = lvAlbums.ItemTemplate.FindName("lvTracks", lvAlbums) as ListView;
ProgressBar pbar = innerListView.ItemTemplate.FindName("pb1", innerListView ) as ProgressBar;
我没有尝试引用进度条控件,而是简单地将数据绑定到它并更新了数据:
<ProgressBar x:Name="pb1" Value="{Binding XPath=@Progress, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" Minimum="0" Maximum="100" Height="5px" Margin="0,0,0,0" Width="145"/>
按预期工作。
我的XAML:
<ListView x:Name="lvAlbums" ItemsSource="{Binding XPath=/downloads/Album}" SelectionMode="Multiple">
<ListView.ItemTemplate>
<DataTemplate>
<StackPanel x:Name="spAlbum">
<!-- Displays first level attributes -->
<TextBlock x:Name="AlbumName" Text="{Binding XPath=@Name}"/>
<TextBlock x:Name="AlbumArtist" Text="{Binding XPath=@Artist}"/>
<ListView x:Name="lvTracks" ItemsSource="{Binding XPath=Item}">
<ListView.ItemTemplate>
<DataTemplate>
<StackPanel x:Name="spTrack">
<!-- Displays the second level attributes -->
<TextBlock x:Name="trackName" Text="{Binding XPath=@Name}"/>
<ProgressBar x:Name="pb1" Minimum="0" Maximum="100" Height="5px" Margin="0,0,0,0"/>
</StackPanel>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
</StackPanel>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
它从 xml 文件中填充得很好。我有一张专辑,下面列出了曲目和每首曲目的进度条。
我现在正在通过 XML 循环下载每首曲目。如何引用进度条?
(进度条)lvAlbums[curAlbum].lvTracks[curTrack].spTrack["pb1"]
类似的东西。
请看看这是否适合您:
var innerListView = lvAlbums.ItemTemplate.FindName("lvTracks", lvAlbums) as ListView;
ProgressBar pbar = innerListView.ItemTemplate.FindName("pb1", innerListView ) as ProgressBar;
我没有尝试引用进度条控件,而是简单地将数据绑定到它并更新了数据:
<ProgressBar x:Name="pb1" Value="{Binding XPath=@Progress, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" Minimum="0" Maximum="100" Height="5px" Margin="0,0,0,0" Width="145"/>
按预期工作。