@AEG

C# Подскажите элемент для списка

Хочу создать список как на скриншоте

70aa2dd04674581de560105606d14fec.jpg

т.е. что бы у записей были и прогрессбар и кнопки.

Какой элемент в Visual Studio для этого больше походит?
  • Вопрос задан
  • 2712 просмотров
Пригласить эксперта
Ответы на вопрос 5
Panicrust
@Panicrust
Упс, не туда)
<Window x:Class="tblr.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="MainWindow" Height="350" Width="525">
    <Grid> 
        <ListBox>
        <StackPanel Orientation="Horizontal" Height="28" HorizontalAlignment="Left" VerticalAlignment="Top">
            <Label Content="Имя_файла_123" Height="28" HorizontalAlignment="Left" VerticalAlignment="Top" />
            <Label Content="Размер Х Мб" Height="28" HorizontalAlignment="Left" VerticalAlignment="Top" />
            <ProgressBar IsEnabled="True" IsIndeterminate="True" Height="30" Width="146" HorizontalAlignment="Left" VerticalAlignment="Top"/>
            <Label Content="Загрузка" Height="28" HorizontalAlignment="Left" VerticalAlignment="Top" />
            <Label Content="Время" Height="28" HorizontalAlignment="Left" VerticalAlignment="Top" />
            <Button Content="Play file" Height="28" HorizontalAlignment="Left" VerticalAlignment="Top"/>
        </StackPanel>
        <StackPanel Orientation="Horizontal" Height="28" HorizontalAlignment="Left" VerticalAlignment="Top">
            <Label Content="Имя_файла_123" Height="28" HorizontalAlignment="Left" VerticalAlignment="Top" />
            <Label Content="Размер Х Мб" Height="28" HorizontalAlignment="Left" VerticalAlignment="Top" />
            <ProgressBar IsEnabled="True" IsIndeterminate="True" Height="30" Width="146" HorizontalAlignment="Left" VerticalAlignment="Top"/>
            <Label Content="Загрузка" Height="28" HorizontalAlignment="Left" VerticalAlignment="Top" />
            <Label Content="Время" Height="28" HorizontalAlignment="Left" VerticalAlignment="Top" />
            <Button Content="Play file" Height="28" HorizontalAlignment="Left" VerticalAlignment="Top"/>
        </StackPanel>
        <StackPanel Orientation="Horizontal" Height="28" HorizontalAlignment="Left" VerticalAlignment="Top">
            <Label Content="Имя_файла_123" Height="28" HorizontalAlignment="Left" VerticalAlignment="Top" />
            <Label Content="Размер Х Мб" Height="28" HorizontalAlignment="Left" VerticalAlignment="Top" />
            <ProgressBar IsEnabled="True" IsIndeterminate="True" Height="30" Width="146" HorizontalAlignment="Left" VerticalAlignment="Top"/>
            <Label Content="Загрузка" Height="28" HorizontalAlignment="Left" VerticalAlignment="Top" />
            <Label Content="Время" Height="28" HorizontalAlignment="Left" VerticalAlignment="Top" />
            <Button Content="Play file" Height="28" HorizontalAlignment="Left" VerticalAlignment="Top"/>
        </StackPanel>
        </ListBox>
    </Grid>
</Window>
Ответ написан
@Gilga
f9bb109a5ef199eeba845854e18afbce.jpg
MainWindow.xaml
<Window
        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" x:Class="WpfApplication1.MainWindow"
        Title="MainWindow" Height="350" Width="525">
	<Grid>
		<ListView ItemsSource="{Binding ExampleList}">
			<ListView.Resources>
				<DataTemplate x:Key="DataTemplatePBar">
					<ProgressBar Value="{Binding PBarValue}" IsIndeterminate="False" Width="100" Height="20"/>
				</DataTemplate>
			</ListView.Resources>
			<ListView.View>
				<GridView>
					<GridViewColumn Header="Name" DisplayMemberBinding="{Binding Text}"/>
					<GridViewColumn Header="ProgressBar" CellTemplate="{DynamicResource DataTemplatePBar}"/>
					<GridViewColumn Header="Button">
						<GridViewColumn.CellTemplate>
							<DataTemplate>
								<Button Content="{Binding ButtonText}"/>
							</DataTemplate>
						</GridViewColumn.CellTemplate>
					</GridViewColumn>
				</GridView>
			</ListView.View>	
		</ListView>
	</Grid>
</Window>

MainViewModel.cs
public class MainViewModel
    {
        public List<ExampleItem> ExampleList { get; set; }

        public MainViewModel()
        {
            this.ExampleList = new List<ExampleItem>();
            Populate();
        }

        public void Populate()
        {
            
            for (int i = 1; i <= 5; i++)
            {
                ExampleList.Add(new ExampleItem { Text = "Example" + i, PBarValue = 10*i,ButtonText = "Button " + i});
            }
        }

    }

    public class ExampleItem
    {
        public string Text { get; set; }
        public int PBarValue { get; set; }
        public string ButtonText { get; set; }
    }

App.xaml
public partial class App : Application
    {
        protected override void OnStartup(StartupEventArgs e)
        {
            base.OnStartup(e);
            MainViewModel main = new MainViewModel();
            MainWindow window = new MainWindow
                                    {
                                            DataContext = main
                                    };
            window.Show();
        }
    }

Ответ написан
Комментировать
Panicrust
@Panicrust
Думаю удобнее сделать каждую строку списка из нескольких элементов и выводить, как список строк. Либо сразу делать таблицу с элементами. В WinForms и в WPF будет разная реализация, поэтому стоит определиться с самого начала. У каждой технологии свои подводные камни
Ответ написан
Комментировать
@AEG Автор вопроса
А можно подробнее, не понял ни первое предложение ни второе?
Ответ написан
foxmuldercp
@foxmuldercp
Системный администратор, программист, фотограф
Windows Forms - классические приложения - очень ограниченный функционал, считается "устаревшим", т.к. не поддерживает масштабирование окна на разных разрешениях, например.

Windows Presentation Framework - xml-based gui, расширяемый, удобный, с более расширенным функционалом.
Вам, собственно предлагается про отличия между ними почитать.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы