У меня есть два текстовых поля Скидка (%) и Цена (€) . Цена равна ReadOnly .
Строка в DataGrid была построена с помощью класса MyData и Скидка привязана к значению скидка , Цена до цена . Когда я изменяю значение percantage на Discount , он должен рассчитать новую цену и изменить исходную стоимость price на новую цену. Но это не обновляет текстовое поле цена . Что мне нужно вызвать, чтобы вызвать обновление на цели?
Xaml:
<DataGridTemplateColumn Header="Discount(%)" Width="0.5*">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<TextBox Name="tbDiscount" Text="{Binding Path=discount, Mode=TwoWay}" TextChanged="tbDiscount_TextChanged"></TextBox>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
<DataGridTemplateColumn Header="Price (€)" Width="0.5*">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<TextBox Name="tbPrice" Text="{Binding Path=price, Mode=TwoWay}" IsReadOnly="True"></TextBox>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
C #:
MyData:
public class MyData
{
public decimal price { set; get; }
public int discount { get; set; }
}
как добавить строку в DataGrid
dataRow.discount = 0;
dataRow.price = price;
dataGridBasket.Items.Add(dataRow);
как я пытаюсь изменить значение цена для textvalue Изменено в TextBox Скидка :
private void tbDiscount_TextChanged(object sender, TextChangedEventArgs e)
{
var text = sender as TextBox;
text.GetBindingExpression(TextBox.TextProperty).UpdateSource();
foreach(MyData item in dataGridBasket.Items)
{
item.price = item.price - (item.price * (Convert.ToDecimal(item.discount) / 100));
}
}