Есть 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;
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Здравствуйте! Так как нормального биндинга для PasswordBox не предусмотрено, то пришлось делать биндинг через параметр команды для кнопкиВ итоге...
Пользуюсь Visual Studio 2017В VS есть такая классная вещь, как "сводка" в обозревателе объектов
Если вкратце, то нужен такой терминал, где при постоянном выводе информации будет всегда и безопасно доступно поле ввода которое бы обрабатывало...