使用我的wpf应用程序,我将一个绑定到datagrid的selected value属性的项添加到绑定到不同datagrid的列表,我们将其称为datagrid2。在datagrid2中,有一些列可以编辑,但问题是当我将相同的项添加到该列表时,会发生的是重复的项目,当被修改时将具有相同的值。这就像它引用相同的项目,所以当我尝试创建一个新项目添加到该列表时,它仍然没有真正做任何事情。
然而,它变得奇怪,因为当我更改为不同的视图(不重置viewmodel)并将相同的项添加到绑定到datagrid2的列表时,它再次正常运行。为什么呢?
编辑: 我正在使用MVVM btw .. 以下是我如何在列表中添加项目:
EstimateModel.EstimateItems.Add(SelectedItemRow);
这是datagrid xaml:
<DataGrid Grid.Row="1" ItemsSource="{Binding EstimateModel.EstimateItems, UpdateSourceTrigger=LostFocus, Mode=TwoWay}"
SelectedItem="{Binding SelectedItemRow, UpdateSourceTrigger=PropertyChanged, Mode=TwoWay}" AlternationCount="2"
SelectionMode="Single" AutoGenerateColumns="False" CanUserResizeRows="False" CanUserResizeColumns="True" CanUserAddRows="False"
RowHeaderStyle="{DynamicResource RowHeaderStyle}" HorizontalAlignment="Stretch" IsSynchronizedWithCurrentItem="True"
PreviewKeyDown="DataGrid_PreviewKeyDown" ScrollViewer.HorizontalScrollBarVisibility="Disabled" RowDetailsVisibilityMode="Collapsed" >
<DataGrid.Columns>
<DataGridTextColumn Header="Vendor Name" Width="*" IsReadOnly="True" Binding="{Binding Path='Vendor'}" />
<DataGridTextColumn Header="Product Name" Width="*" IsReadOnly="True" Binding="{Binding Path='ItemName'}">
<DataGridTextColumn.ElementStyle>
<Style >
<Setter Property="TextBlock.TextWrapping" Value="Wrap"/>
</Style>
</DataGridTextColumn.ElementStyle>
</DataGridTextColumn>
<DataGridTextColumn Header="Description" Width="2*" IsReadOnly="True" Binding="{Binding Path='Description'}" >
<DataGridTextColumn.ElementStyle>
<Style >
<Setter Property="TextBlock.TextWrapping" Value="Wrap"/>
</Style>
</DataGridTextColumn.ElementStyle>
</DataGridTextColumn>
<DataGridTextColumn Header="Quantity" Width=".5*" IsReadOnly="False" Binding="{Binding Path=NewQty, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged, ValidatesOnNotifyDataErrors=True}"/>
<DataGridTextColumn Header="Sell" Width=".5*" IsReadOnly="False"
Binding="{Binding Path=SellPrice, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged, StringFormat=C, ValidatesOnNotifyDataErrors=True}" />
<DataGridTextColumn Header="List" Width=".5*" IsReadOnly="True"
Binding="{Binding Path=ListPrice, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged, StringFormat=C}" />
<DataGridTextColumn Header="Product Finish" Width=".75*" IsReadOnly="True" Binding="{Binding Path='ProductFinishCode'}" />
<DataGridTextColumn Header="Product Category" Width=".75*" IsReadOnly="True" Binding="{Binding Path='ProductCategory'}" />
<DataGridTextColumn Header="Cost" Width=".5*" IsReadOnly="True" Binding="{Binding Path='CostPrice', StringFormat=C}" />
<DataGridTextColumn Header="Total" Width=".5*" IsReadOnly="True" Binding="{Binding Path='LineTotal', StringFormat=C, UpdateSourceTrigger=PropertyChanged}" />
编辑2:
var item = new ItemModel();
item = SelectedItemRow;
EstimateModel.EstimateItems.Add(item);
Here is the problem that keeps happening.当我更改第一个重复项目的数量时,如您所见,其他副本将自动更改为相同的值。