Хотел попробовать написать программу по правилам паттерна MVVM. Фактически я никогда не работал с ним.
Мне нужно связать SQL Server с WPF и вывести таблицу в DataGrid
. Это у меня получилось.
НО! Я решил усложнить себе задачу и сделать за принципом паттерна.
И проблема заключается в том, что когда я инициализирую сами столбцы и не разрешаю автоматическую генерацию столбцов заполнение DataGrid
— выдает пустую таблицу.
Я понимаю, что где-то в файле MainViewModel
нужно прописать коллекцию работы с SQL, но не знаю как и сформулировать запрос в Google не могу правильно =)
Разметка XAML:
<DataGrid x:Name="ShipmentGrid" Style="{StaticResource DataGridShipment}" ItemsSource="{Binding ShipmentList}">
<DataGrid.Columns>
<DataGridTextColumn Header="Организация" Binding="{Binding Oraganization}" Width="100"></DataGridTextColumn>
<DataGridTextColumn Header="Город" Binding="{Binding City}" Width="100"></DataGridTextColumn>
<DataGridTextColumn Header="Страна" Binding="{Binding Country}" Width="100"></DataGridTextColumn>
<DataGridTextColumn Header="Менеджер" Binding="{Binding Manager}" Width="100"></DataGridTextColumn>
<DataGridTextColumn Header="Количество" Binding="{Binding Quantity}" Width="100"></DataGridTextColumn>
<DataGridTextColumn Header="Сумма за ед." Binding="{Binding AmountPerItem}" Width="100"></DataGridTextColumn>
<DataGridTextColumn Header="Общая сумма" Binding="{Binding TotalAmount}" Width="100"></DataGridTextColumn>
<DataGridTextColumn Header="Дата" Binding="{Binding Data}" Width="100"></DataGridTextColumn>
</DataGrid.Columns>
</DataGrid>
Кастомизация DataGrid
:
<Setter Property="AutoGenerateColumns" Value="False"></Setter>
В Model
у меня храниться один файл (Shipments
):
class Shipments
{
public string Organization { get; set; }
public string City { get; set; }
public string Country { get; set; }
public string Manager { get; set; }
public int Quantity { get; set; }
public double AmntPerInt { get; set; }
public double TotalAmount { get; set; }
public string Data { get; set; }
public Shipments(string Organization, string City, string Country, string Manager,
int Quantity, double AmntPerInt, double TotalAmount, string Data)
{
this.Organization = Organization;
this.City = City;
this.Country = Country;
this.Manager = Manager;
this.Quantity = Quantity;
this.AmntPerInt = AmntPerInt;
this.TotalAmount = TotalAmount;
this.Data = Data;
}
}
А в папке ViewModel
три файла:
public abstract class ViewModelBase : INotifyPropertyChanged
{
public event PropertyChangedEventHandler PropertyChanged;
protected void OnPropertyChanged(string propertyName)
{
PropertyChangedEventHandler handler = PropertyChanged;
if (handler != null)
{
handler(this, new PropertyChangedEventArgs(propertyName));
}
}
}
class MainViewModel : ViewModelBase {
public ObservableCollection<ShipmentViewModel> ShipmentList { get; set; }
public MainViewModel(List<Shipments> shipments) {
ShipmentList = new ObservableCollection<ShipmentViewModel>(shipments.Select(b => new ShipmentViewModel(b)));
}
}
class ShipmentViewModel : ViewModelBase {
public Shipments Shipments;
public ShipmentViewModel(Shipments shipments) {
this.Shipments = shipments;
}
public string Organization {
get { return Shipments.Organization; }
set
{
Shipments.Organization = value;
OnPropertyChanged("Организация");
}
} // и дальше каждый столбец
}
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Сейчас читаю вот эту статью Difference between Buffer & Stream in C# и хотел бы для себя сначала уяснить что правильно понимаю, что происходит под капотом...
Возникла проблема оптимизации алгоритма поиска пути на карте (двухмерный массив), уперся в производительность, которая после 200 элементов...
День добрый, требуется заблокировать textbox`s на минуту, а потом снять блокировку, и если были введены неверные значения более двух разЕсли в третий...
Работаю с Retrofit2, Volley даже уже Postman тестилНе работает $_POST на сервере