Есть DataGrid данные заполняются через биндинг:
<Custom:DataGrid Name="dgMenuProduct" ItemsSource="{Binding Menus}" AutoGenerateColumns="False">
<Custom:DataGrid.Columns>
<Custom:DataGridComboBoxColumn x:Name="ColProduct" SelectedValueBinding="{Binding Path=Product}" ItemsSource="{Binding}"
SelectedValuePath="Prod" DisplayMemberPath="Prod" Header="Продукт" Width="4*"/>
<Custom:DataGridTextColumn Binding="{Binding Path=CenaProd}" Header="Цена" Width="2*"/>
<Custom:DataGridCheckBoxColumn Binding="{Binding Path=Subvencia}" Header="Субвенция" Width="2*"/>
<Custom:DataGridTextColumn IsReadOnly="False" Binding="{Binding Path=KolvoProd}" Header="Количество" Width="2*"/>
<Custom:DataGridComboBoxColumn x:Name="ColTip" SelectedValueBinding="{Binding Path=TipPP}" ItemsSource="{Binding}"
SelectedValuePath="Tip" DisplayMemberPath="Tip" Header="Тип" Width="3*"/>
</Custom:DataGrid.Columns>
</Custom:DataGrid>
Содержимое выпадающего списка берется из файла xml и загружается в класс:
public class ProductPit
{
public ProductPit(string prod, double cena, string ediz)
{
Prod = prod;
Cena = cena;
EdIz = ediz;
}
public string Prod { get; set; }
public double Cena { get; set; }
public string EdIz { get; set; }
}
Сам Datagrid биндится из класса:
public class Menu
{
public Menu(string product, double cenaprod, bool subvencia, double kolvoprod, string tippp)
{
Product = product;
CenaProd = cenaprod;
Subvencia = subvencia;
KolvoProd = kolvoprod;
TipPP = tippp;
}
// Наименование продукта - будет задаваться в DataGridComboBoxColumn, заполненного List<ProductPit> months
public string Product { get; set; }
// Цена продукта - будет задаваться в DataGrid, в соответствии с выбранным продуктом питания
public double CenaProd { get; set; }
public bool Subvencia { get; set; }
// Количество продукта питания - будет задаваться в DataGrid вручную
public double KolvoProd { get; set; }
public string TipPP { get; set; }
}
Как сделать так чтобы при выборе значения в выпадающем списке первого столбца, во второй столбец подставлялось соответствующее значение из класса ProductPit?
Вам нужно переопределить сеттер Product
в классе Menu
:
string product;
public string Product
{
get => product;
set
{
product = value;
CenaProd = ProductPits // - это ваша коллекция, содержащая все ProductPit
.FirstOrDefault(pp => pp.Prod == product)
.Cena;
}
}
Хотя, я считаю, более правильным было бы хранить в классе Menu
ссылку на конкретный ProductPit
, а Product
и CenaProd
брать уже из него:
public ProductPit ProductPit { get; set; }
public string Product => ProductPit.Prod;
public double CenaProd => ProductPit.Cena;
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Здравствуйте! Так как нормального биндинга для PasswordBox не предусмотрено, то пришлось делать биндинг через параметр команды для кнопкиВ итоге...
Пользуюсь Visual Studio 2017В VS есть такая классная вещь, как "сводка" в обозревателе объектов
Если вкратце, то нужен такой терминал, где при постоянном выводе информации будет всегда и безопасно доступно поле ввода которое бы обрабатывало...