else if (!string.IsNullOrEmpty(cmbProductName.Text) && !string.IsNullOrEmpty(txtQuantity.Text))
{
Receipt obj = new Receipt() { Id = order++, ProductName = Convert.ToString(cmbProductName.SelectedItem), Quantity = Convert.ToInt32(txtQuantity.Text), Price = Convert.ToDouble(txtPrice.Text) };
total += Convert.ToDouble(txtQuantity.Text) * Convert.ToDouble(txtPrice.Text);
receiptBindingSource.Add(obj);
receiptBindingSource.MoveLast();
Clear();
}
txtTotal.Text = String.Format("P{0}", Convert.ToString(total));
}
private void refresh() {
dataGridView1.Rows.Clear();
dataGridView1.Refresh();
dataGridView1.DataSource = receiptBindingSource;
}
任何人都可以帮助我使用什么代码来重置我的绑定。因为当点击新按钮时。产品的计算仍在继续。我正在制作一个计费系统。请帮我。提前致谢。
答案 0 :(得分:0)
以下是您将要做的事情的基本概述
想象一下,文本框是您的数据网格
您的XAML
<TextBox Text="{Binding SelectedValue,UpdateSourceTrigger=PropertyChanged,Mode=TwoWay}">
</TextBox>
<Button Margin="10,0,10,0" Width="100" Content="New" >
<i:Interaction.Triggers>
<i:EventTrigger EventName="Click">
<ei:CallMethodAction
TargetObject="{Binding}"
MethodName="OnNewClicked"/>
</i:EventTrigger>
</i:Interaction.Triggers>
</Button>
您的内容为文字
XAML页面的代码隐藏(查看)
public CodeBehindOfYourXAML()
{
YourViewModel dataContext = new YourViewModel();
this.DataContext = dataContext;
InitializeComponent();
}
datacontext是您拥有所有变量的类 ,在这里你绑定你的View(XAML)和你的ViewModel(类)
您的ViewModel
using SimpleMvvmToolkit;
namespace LocationToNamespace.Derp
{
public class YourViewModel : ViewModelBase<YourViewModel>
{
private string _selectedValue;
public string SelectedValue
{
get
{
return _selectedValue;
}
set
{
_selectedValue = value;
NotifyPropertyChanged(m => m.SelectedValue);
}
}
public void OnNewClicked()
{
SelectedValue = string.Empty;
}
}
}
viewmodel包含您现在可以简单地绑定到数据网格的所有数据(在本例中为文本框)
每当您对数据网格进行更改时(本例中为文本框),它将自动通过
的组合进行更新NotifyPropertyChanged(m => m.SelectedValue);//viewmodel
UpdateSourceTrigger=PropertyChanged //XAML
注意下载nuget软件包“SimpleMvvmToolkit”&lt; - 它在viewmodel中使用