如何将重复项添加到列表中

时间:2016-01-11 21:25:25

标签: c# wpf datagrid

使用我的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.当我更改第一个重复项目的数量时,如您所见,其他副本将自动更改为相同的值。

0 个答案:

没有答案
相关问题