Не получается разобраться в привязке данных в DataGrid к своему классу.
DataGrid привязан к классу GiftComposition. При выборе наименования конфет из ComboBox, выбранный элемент не изменяется в списке типа List<Product> Candies
(публичное свойство класса ), в результате список всегда состоит из первого элемента коллекции(который добавляется при нажатии кнопки Добавить)
Форма для редактирования класса GiftComposition:
Код xaml DataGrid:
<DataGrid AutoGenerateColumns="False" Grid.Row="1" HorizontalAlignment="Stretch" Name="dgvCandies" VerticalAlignment="Stretch"
ItemsSource="{Binding GiftComposition.Candies, UpdateSourceTrigger=PropertyChanged}" BorderThickness="1" CanUserAddRows="False">
<DataGrid.Columns>
<DataGridTemplateColumn Header="Наименование" Width="200*">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<ComboBox ItemsSource="{Binding Candies.ProductList, RelativeSource={RelativeSource AncestorType=Controls:MetroWindow}, UpdateSourceTrigger=PropertyChanged}"
SelectedValuePath="Product.Id"
SelectedValue="{Binding GiftComposition.Candies.Id}"
HorizontalAlignment="Stretch">
<ComboBox.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding ProductName}"/>
</DataTemplate>
</ComboBox.ItemTemplate>
</ComboBox>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
<Controls:DataGridNumericUpDownColumn Header="Количество"
Binding="{Binding Amount, UpdateSourceTrigger=PropertyChanged}"
StringFormat="N0"
Minimum="0"
Width="100"/>
</DataGrid.Columns>
</DataGrid>
Поля класса GiftComposition:
int _id = 0;
string _vendorCode = "";
string _giftName = "";
List<Product> _candies;
List<Product> _package;
List<Product> _toys;
decimal _totalPrice = 0;
public int Id
{
get { return _id; }
set { _id = value; }
}
public string VendorCode
{
get { return _vendorCode; }
set {
_vendorCode = value;
OnPropertyChanged("VendorCode");
}
}
public string GiftName
{
get { return _giftName; }
set {
_giftName = value;
OnPropertyChanged("GiftName");
}
}
public List<Product> Candies
{
get { return _candies; }
set {
_candies = value;
UpdateTotalCost();
OnPropertyChanged("Candies");
}
}
public List<Product> Package
{
get { return _package; }
set {
_package = value;
OnPropertyChanged("Package");
UpdateTotalCost();
}
}
public List<Product> Toys
{
get { return _toys; }
set {
_toys = value;
OnPropertyChanged("Toy");
UpdateTotalCost();
}
}
Код кнопки Добавить:
GiftComposition.Candies.Add(Candies.ProductList.First().Copy());
GiftComposition.UpdateTotalCost();
dgvCandies.Items.Refresh();
Привязка Артикула, Названия, Количества работает нормально.
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Виртуальный выделенный сервер (VDS) становится отличным выбором
Добрый день, при передачи формы в контроллер переменная string eText, которая должна содержать значение textarea равна nullМожет кто сталкивался с подобным...
Есть скрытая форма, на ней таймер, который срабатывает 1 раз в секунду, (это не вирус или воровайка какая), а программа, которая будет отслеживать...
Итак, у нас есть два класса, реализующих интерфейс IStateRepository: FileRepo and DBRepo (реализация вне контекста)И класс-потребитель:
Есть 2 textBox'а, один 1 другой второйВ них вписываю информацию в первый "Jule" во второй "June"