0

我在列表视图中有一个文本框,用户可以在其中编辑它,itemsource 是 obervablecollection。一切正常,除了当用户编辑文本框的值并按下取消保存时,他关闭窗口并再次打开它,当它应该回到原来的值时,新值仍然存在。事实上,我直接从存储库数据库中填充它,所以我不确定它为什么没有恢复到原始值。有人知道我的代码有什么问题吗?我错过了什么?谢谢。

<ListView Name="lvNeutralEduc" Grid.Column="0" Grid.Row="0"   BorderBrush="Transparent"    Height="Auto" MaxHeight="300" ScrollViewer.HorizontalScrollBarVisibility="Auto">
                    <ListView.View>
                        <GridView>
                            <GridView.Columns>
                                <GridViewColumn Header="Family Law Course" Width="Auto" >
                                    <GridViewColumn.CellTemplate>
                                        <DataTemplate>
                                            <CheckBox IsChecked="{Binding Path=IsFamilyLawCourse}" HorizontalAlignment="Center" Checked="CheckBox_Checked" Unchecked="CheckBox_Checked" />
                                        </DataTemplate>
                                    </GridViewColumn.CellTemplate>
                                </GridViewColumn>
                                <GridViewColumn Header="Course Title" Width="200" >
                                    <GridViewColumn.CellTemplate>
                                        <DataTemplate>
                                            <TextBox Text="{Binding Path=ContinuingType, Mode=TwoWay}" Width="200" TextChanged="TextBox_TextChanged" />
                                        </DataTemplate>
                                    </GridViewColumn.CellTemplate>
                                </GridViewColumn>
                                <GridViewColumn Header="Course Date"  Width="110">
                                    <GridViewColumn.CellTemplate>
                                        <DataTemplate>
                                            <useable:MaskedDatePicker DateValue="{Binding Path=CourseDate, Mode=TwoWay}"  Width="110" PreviewTextInput="MaskedDatePicker_PreviewTextInput" GotFocus="MaskedDatePicker_GotFocus" />
                                        </DataTemplate>
                                    </GridViewColumn.CellTemplate>
                                </GridViewColumn>
                                <GridViewColumn Header="Course Expiration"  Width="110">
                                    <GridViewColumn.CellTemplate>
                                        <DataTemplate>
                                            <useable:MaskedDatePicker DateValue="{Binding Path=CourseExpiration, Mode=TwoWay}"  Width="110" PreviewTextInput="MaskedDatePicker_PreviewTextInput"/>
                                        </DataTemplate>
                                    </GridViewColumn.CellTemplate>
                                </GridViewColumn>
                            </GridView.Columns>
                        </GridView>
                    </ListView.View>
                </ListView>

后面的代码:

 public ObservableCollection<tblContinuingEducationHistory> EducNeutralList
    {
        get { return _educNeutrallist; }
        set
        {
            if (_educNeutrallist != value)
            {
                _educNeutrallist = value;
                OnPropertyChanged("EducNeutralList");
            }
        }
    }
//constructor
public NeutralContinuingEducHistory(tblNeutralFileMaint currentNeutralFM)
    {
        isAttyGal = false;   
        OtherCmdText = "Print Report";
        PrintCmdVisibility = Visibility.Visible;
        OtherCmdVisibility = Visibility.Collapsed;
        AttyGALFormVisibility = Visibility.Collapsed;
        ToggleVisibility();

        InitializeComponent();

        if (currentNeutralFM != null)
        {

            CurrentNeutralFM = currentNeutralFM;
            txtMemberName.Text = CurrentNeutralFM.FullName;
            var items = FileMaintenanceBusiness.Instance.GetManyNeutralFMContEducHistoryInfobyKeyword(currentNeutralFM.NeutralID, "NeutralID");//FileMaintenanceBusiness.Instance.GetManyNeutralFMContEducHistoryInfobyKeyword(currentNeutralFM.NeutralID, "NeutralID")!=null ? FileMaintenanceBusiness.Instance.GetManyNeutralFMContEducHistoryInfobyKeyword(currentNeutralFM.NeutralID, "NeutralID") : null);//currentNeutralFM.tblContinuingEducationHistories);
            EducNeutralList = items != null ? new ObservableCollection<tblContinuingEducationHistory>(items) : new ObservableCollection<tblContinuingEducationHistory>(CurrentNeutralFM.tblContinuingEducationHistories);
            countOrig = EducNeutralList != null ? EducNeutralList.Count : 0;
            lvNeutralEduc.ItemsSource = EducNeutralList;
        }

        this.DataContext = this;
    }

填充 get 方法的业务层:

 public IList<tblContinuingEducationHistory> GetManyNeutralFMContEducHistoryInfobyKeyword(string keyword, string by)
    {
        try
        {
            return _continuingEducationHistoryRepository.SelectManyByColumnKeyword(keyword, by);
        }
        catch (Exception ex)
        {

        }
        return null;
    }

EF 存储库:

 public IList<TEntity> SelectManyByColumnKeyword(string Key, string columnName)
    {

        // First we define the parameter that we are going to use the clause. 
        var xParam = Expression.Parameter(typeof(TEntity), typeof(TEntity).Name);
        MemberExpression leftExpr = MemberExpression.Property(xParam, columnName);
        Expression rightExpr = Expression.Constant(Key);
        BinaryExpression binaryExpr = MemberExpression.Equal(leftExpr, rightExpr);
        //Create Lambda Expression for the selection 
        Expression<Func<TEntity, bool>> lambdaExpr =
        Expression.Lambda<Func<TEntity, bool>>(binaryExpr,
        new ParameterExpression[] { xParam,  });
        //Searching ....
        IList<TEntity> resultCollection = ((IADRRepository<TEntity, TContext>)this).SelectAll
                    (new Specification<TEntity>(lambdaExpr));
        if (null != resultCollection && resultCollection.Count() > 0)
        {
            //return valid single result
            return resultCollection;
        }//end if 
        return null;
    }
4

1 回答 1

0

我想到了。我在我的存储库中进行了一些更改。context.Refresh(RefreshMode.StoreWins, resultCollection); 解决了。

 if (null != resultCollection && resultCollection.Count() > 0)
        {
            //return valid single result
           context.Refresh(RefreshMode.StoreWins, resultCollection);
           return resultCollection;
        }
于 2011-08-04T07:59:31.903 回答