Недавно начал изучать wpf поэтому могу задавать достаточно глупые вопросы. Итак есть DataGrid
<Page.DataContext>
<local:ClientPortfellVM />
</Page.DataContext>
//....
<DataGrid Margin="0,50,0,0" ItemsSource="{Binding collection}">
<DataGrid.Columns>
<DataGridTextColumn Header="Type" IsReadOnly="True" Width="*" Binding="{Binding Type}"/>
<DataGridTextColumn Header="Balance" IsReadOnly="True" MaxWidth="200" MinWidth="200" Binding="{Binding Balance}" />
</DataGrid.Columns>
</DataGrid>
который нужно заполнить строками. Вью моделью является вот такой класс :
public class ClientPortfellVM
{
public ObservableCollection<FundViewModel> collection = new ObservableCollection<FundViewModel>();
public class FundViewModel
{
public string Type { get; set; }
public string Balance { get; set; }
}
}
И теперь мне нужно, как я понимаю заполнить коллекцию примерно так :
collection.Add(new FundViewModel() { Type = "111", Balance = "222" });
Только куда её вписывать, если все написанное вообще правильно, не знаю - подскажите кто знает, а если неправильно поправьте пожалуйста.
Во-первых сделайте collection свойством, иначе привязка не пройдет:
public ObservableCollection<FundViewModel> Collection { get; set }
Свойства принято писать с заглавной буквы.
заполняете коллекцию в методе или напрямую из конструктора класса:
public class ClientPortfellVM
{
public ObservableCollection<FundViewModel> Сollection { get; set; }
public ClientPortfellVM()
{
Collection = new ObservableCollection<FundViewModel>();
Collection.Add(new FundViewModel() { Type = "111", Balance = "222" });
}
public class FundViewModel
{
public string Type { get; set; }
public string Balance { get; set; }
}
}
но у меня всего 2 столбца должно быть, а появляется целых 4
все дело в свойстве AutoGenerateColumns. По умолчанию оно установлено в true, что говорит что таблица автоматически генерирует столбцы в зависимости от того сколько свойств в классе. Установите его в false и все будет как надо:
<DataGrid Margin="0,50,0,0" ItemsSource="{Binding collection}" AutoGenerateColumns="False">
<DataGrid.Columns>
<DataGridTextColumn Header="Type" IsReadOnly="True" Width="*" Binding="{Binding Type}"/>
<DataGridTextColumn Header="Balance" IsReadOnly="True" MaxWidth="200" MinWidth="200" Binding="{Binding Balance}" />
</DataGrid.Columns>
</DataGrid>
Как развивать веб-проекты в 2026 году: технологии, контент E-E-A-T и факторы доверия
Современные инструменты для криптотрейдинга: как технологии помогают принимать решения
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники