Listview не меняется при обновлении - PullRequest
2 голосов
/ 20 октября 2011

У меня есть список с видимым источником коллекции. Я уверен, что данные изменились в коде позади, но я полностью исчерпан, почему пользовательский интерфейс не отображает изменения. Чего мне не хватает?

Мой xaml:

<GridViewColumn Width="70" Header="Status">
    <GridViewColumn.CellTemplate>
        <DataTemplate>
            <!--<CheckBox IsChecked="{Binding Path=Status, Mode= Twoway}" HorizontalContentAlignment="Center" IsEnabled="False"/>-->
            <TextBlock Text="{Binding Path=Status, Mode= Twoway}" TextAlignment="Center" Loaded="Page_Loaded"/>
        </DataTemplate>
    </GridViewColumn.CellTemplate>
</GridViewColumn>

Мой класс:

public partial class tblADRMaster: INotifyPropertyChanged
{
    public string Status
    {
        get { return _status; }
        set
        {
            if (_status != value)
            {
                _status = value;
                OnPropertyChanged("Status");
            }
        }
    }
}

Это мой код:

ObservableCollection<tblADRMaster> list = new ObservableCollection<tblADRMaster>();
CurrentCase = FileMaintenanceBusiness.Instance.GetADRMasterInfobyKeywordRefresh(caseNo.CaseIDSystem, "CaseIDSystem");
foreach (var c in listFrWWC)
{
    if (c.CaseIDSystem != CurrentCase.CaseIDSystem)
        list.Add(c);
    else
        list.Add(CurrentCase);

}
foreach (var caseMaster in list)
{
    caseMaster.IsMissingDocs = GetMissingDoc(caseMaster.tblADRDispositions);
    caseMaster.IsProblemCase = !string.IsNullOrEmpty(caseMaster.ProblemNote) ? "Yes" : "No";
    caseMaster.Status = GetStatus(caseMaster);
}

lvAdrMaster.ItemsSource = list;

Я хочу изменить статус. Это действительно меняет, потому что я установил точку останова, и STATUS перешел из HOLD в ACTIVE, но в списке не отобразятся изменения. оно остается УДЕРЖИМОЙ, пока я не нажму назад или не перезагрузлю элементы.

Я занимался устранением неполадок весь этот день, и я не могу думать ни о чем другом, что я мог пропустить. Пожалуйста скажите мне. спасибо.

Ответы [ 3 ]

1 голос
/ 20 октября 2011

Попробуйте использовать CollecitonViewSource

 private ListCollectionView EmpCollectionView
    {
        get
        {
            return (ListCollectionView)CollectionViewSource.GetDefaultView(ListOfEmp);
        }
    }


    private ObservableCollection<Employee> listOfEmp = new ObservableCollection<Employee>();
    public ObservableCollection<Employee> ListOfEmp
    {
        get { return listOfEmp; }
        set { listOfEmp = value; }
    }

и после обновления коллекции просто обновите collectionViewSource, как

 public void OnAdd(object sender)
    {
        ToggleButton tb = sender as ToggleButton;

        EmpCollectionView.SortDescriptions.Clear();
        if (tb.IsChecked == true)
        {

            EmpCollectionView.SortDescriptions.Add(new SortDescription(tb.Content.ToString(), ListSortDirection.Ascending));
            EmpCollectionView.Refresh();
        }
        else
        {
            EmpCollectionView.SortDescriptions.Add(new SortDescription(tb.Content.ToString(), ListSortDirection.Descending));
            EmpCollectionView.Refresh();
        }
    }
1 голос
/ 20 октября 2011

Попробуйте это для привязки вашего текстового блока:

Text="{Binding Path=Status, Mode= Twoway, UpdateSourceTrigger=PropertyChanged}"
0 голосов
/ 20 октября 2011

Реализован ли интерфейс INotifyPropertyChanged в классе tblADRMaster и уведомление о повышенном свойстве для свойства Status?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...