При добавлении downloadcontrols
к моим ObservableCollection<DownloadControl>
они отображаются в XAML ListView
.Однако я не могу отобразить полосы прокрутки без установки явной высоты.Когда я установил полосу прокрутки, чтобы показать.Он появляется слева, а не справа, что заставляет меня поверить, что переплет не в правильном месте.Но не удается заставить его работать должным образом.Я использую разные Listview
s только с метками и привязками, и они ведут себя как положено.
Я пытался изменить макет, используя gridview
и gridviewcolumn
Я пытался связываться с DataTemplate
, ноэто приведет к нарушению привязки данных в UserControl
.
Мой текущий xaml в моем главном окне, отображающий пользовательские элементы управления в виде списка
<ListView Name="ListViewDownloads" ItemsSource="{Binding DownloadControls}">
<ListView.View>
<GridView>
<GridViewColumn Width="500"/>
</GridView>
</ListView.View>
</ListView>
public ObservableCollection<DownloadControl> DownloadControls
{
get => (ObservableCollection<DownloadControl>)GetValue(DownloadControlsProperty);
set => SetValue(DownloadControlsProperty, value);
}
// Using a DependencyProperty as the backing store for DownloadControls. This enables animation, styling, binding, etc...
public static readonly DependencyProperty DownloadControlsProperty =
DependencyProperty.Register("DownloadControls",
typeof(ObservableCollection<DownloadControl>), typeof(MainWindow));
Пользовательский элемент управления DownloadControl
<UserControl x:Class="Robeats_Desktop.UserControls.DownloadControl"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:local="clr-namespace:Robeats_Desktop.UserControls"
mc:Ignorable="d">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="250" />
<ColumnDefinition Width="1*" MinWidth="150" />
</Grid.ColumnDefinitions>
<Image Source="{Binding Source}" HorizontalAlignment="Left" VerticalAlignment="Top" />
<Grid Grid.Column="1" Name="GridInfo">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="70" />
<ColumnDefinition Width="3*" MaxWidth="250" />
</Grid.ColumnDefinitions>
<StackPanel>
<Label>Title:</Label>
<Label>Uploader:</Label>
<Label>Duration:</Label>
</StackPanel>
<StackPanel Grid.Column="1">
<Label Content="{Binding Title}" HorizontalAlignment="Left"
VerticalAlignment="Top" />
<Label Content="{Binding Uploader}" HorizontalAlignment="Left"
VerticalAlignment="Top" />
<Label Content="{Binding Duration}" HorizontalAlignment="Left"
VerticalAlignment="Top" />
<ProgressBar Value="{Binding Progress}" Background="Transparent" Name="ProgressBarDownload" />
</StackPanel>
</Grid>
</Grid>
</UserControl>
это текущий результат.Ожидаемый результат - иметь полосу прокрутки справа, когда мои элементы больше текущей высоты окна.
Полный исходный код: https://github.com/robeats-player/Robeats-Desktop