WPF привязка данных

435
18 августа 2017, 23:32

Не получается разобраться в привязке данных в 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();

Привязка Артикула, Названия, Количества работает нормально.

READ ALSO
ASP.NET MVC передать значение textarea в контроллер

ASP.NET MVC передать значение textarea в контроллер

Добрый день, при передачи формы в контроллер переменная string eText, которая должна содержать значение textarea равна nullМожет кто сталкивался с подобным...

339
игнор условия в таймере формы С# (WIN FORMS) VS2015

игнор условия в таймере формы С# (WIN FORMS) VS2015

Есть скрытая форма, на ней таймер, который срабатывает 1 раз в секунду, (это не вирус или воровайка какая), а программа, которая будет отслеживать...

260
Autofac when using IIndex&lt;X,B&gt; to resolve service throws exception

Autofac when using IIndex<X,B> to resolve service throws exception

Итак, у нас есть два класса, реализующих интерфейс IStateRepository: FileRepo and DBRepo (реализация вне контекста)И класс-потребитель:

190
Запись и чтение информации в и из listBox

Запись и чтение информации в и из listBox

Есть 2 textBox'а, один 1 другой второйВ них вписываю информацию в первый "Jule" во второй "June"

323