我有 WPF 应用程序并且无法绑定。我的 UI 看起来像链接上的图像。(我很抱歉没有嵌入图像,因为我是新用户并且需要获得积分才能发布图像)
http://i.stack.imgur.com/a1koN.jpg
基本上 1 个产品可以有许多定价细节。该屏幕用于从数据库中检索信息的编辑模式(为了这个示例,我只是对值进行了硬编码)。在 中选择一个项目datagrid
将在其各自的文本框中加载信息。这目前工作正常。我唯一要修改的是更改文本框中的值时的行为,因为它datagrid
会立即更新。EDIT
单击按钮后是否可以仅更新数据网格?请注意,此时所做的任何更改都尚未保存在数据库中,只有在UPDATE
单击按钮(顶部)时才会保存。
这是 XAML 文件的片段:
数据网格
<DataGrid AutoGenerateColumns="False" AlternationCount="2" Height="100" ItemsSource="{Binding ProductPrices, Mode=TwoWay}" SelectedItem="{Binding ProductPrice}" IsReadOnly="True" SelectionMode="Single" GridLinesVisibility="Horizontal">
<DataGrid.Columns>
<DataGridTextColumn Binding="{Binding UnitPrice, StringFormat=\{0:N\}}" Header="Unit Price" Width="100" />
<DataGridTextColumn Binding="{Binding LowestPrice, StringFormat=\{0:N\}}" Header="Lowest Price" Width="100"/>
<DataGridTextColumn Binding="{Binding EffectiveDate, StringFormat=\{0:d\}}" Header="Effective Date" Width="150"/>
</DataGrid.Columns>
</DataGrid>
文本框
<TextBox Grid.Column="1" Grid.Row="0" Text="{Binding Path=ProductPrice.UnitPrice, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged, NotifyOnValidationError=True, ValidatesOnDataErrors=True, ValidatesOnExceptions=True, StringFormat=\{0:N\}}" Width="100" />
<TextBox Grid.Column="3" Grid.Row="0" Text="{Binding Path=ProductPrice.LowestPrice, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged, NotifyOnValidationError=True, ValidatesOnDataErrors=True, ValidatesOnExceptions=True, StringFormat=\{0:N\}}" Width="100" />
<DatePicker Grid.Column="1" Grid.Row="1" Text="{Binding Path=ProductPrice.EffectiveDate, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged, NotifyOnValidationError=True, ValidatesOnDataErrors=True, ValidatesOnExceptions=True}" Width="100" />
视图模型
private Product _product;
public Product Product
{
get { return _product; }
set
{
_product = value;
NotifyPropertyChanged(m => m.Product);
}
}
private ProductPrice _productPrice;
public ProductPrice ProductPrice
{
get { return _productPrice; }
set
{
_productPrice = value;
NotifyPropertyChanged(m => m.ProductPrice);
}
}
private ObservableCollection<ProductPrice> _productPrices;
public ObservableCollection<ProductPrice> ProductPrices
{
get { return _productPrices; }
set
{
_productPrices = value;
NotifyPropertyChanged(m => m.ProductPrices);
}
}
UpdateSourceTrigger=PropertyChanged
一定是罪魁祸首。但我仍然不知道如何解决这个案子。MVVM
使用方法可以实现吗?
我已经在SkyDrive上上传了源代码