powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / WPF, Silverlight [игнор отключен] [закрыт для гостей] / Разные HashCode из View
3 сообщений из 3, страница 1 из 1
Разные HashCode из View
    #39614632
vb_sub
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Всем привет, никак не могу понять из-за чего ошибка,подскажите кто сталкивался с такой проблемой.
Есть itemscontrol
Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
      <ItemsControl Grid.Row="1" ItemsSource="{Binding person_listView}">
                <ItemsControl.ItemTemplate >
                    <DataTemplate>
                        <StackPanel Orientation="Horizontal"  >
                            
                            <Button Width="30"
                                    Command="{Binding  DataContext.add_to_visualCommand, 
                                    RelativeSource ={RelativeSource Mode=FindAncestor, 
                                    AncestorType={x:Type local:BaseView}}}"         
                                    CommandParameter="{Binding}"   />
                            <TextBlock Text="{Binding F}"/>
                            
                        </StackPanel>
                    </DataTemplate>
                </ItemsControl.ItemTemplate>                 
            </ItemsControl>



Код: c#
1.
  public class person : BaseViewModel, IEquatable<person>, IComparable<person>



Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
   public  class ViewModel : BaseViewModel
    {

        public ICollectionView person_listView { get; set; }

        //нужно для получения списка  person
        private DataStore ds => Ioc.Get<DataStore>();
        public ObservableCollection<person> person_list => ds.person_list;


        public ViewModel()
        {
            person_listView = CollectionViewSource.GetDefaultView(ds.person_list);
        }

        //     Command="{Binding  DataContext.add_to_visualCommand
        private async void add_to_visual(object parameter)
        {

            person p;

            if (parameter is person)
                p = parameter as person;
            else
                return;

            person PersonFromStore = ds.person_list.Where(k => k.Equals(p)).FirstOrDefault();

            System.Diagnostics.Debug.WriteLine(p.GetHashCode());
            System.Diagnostics.Debug.WriteLine(PersonFromStore.GetHashCode());

        }
    }



Проблема в том, что если я использую для биндинга person_list, все нормально. Если я хочу добавить фильтрации и использую
person_listView, то при вызове add_to_visual в качестве параметра приходит объект с другим HashCode, то есть хз откуда он сгенерировался.

Проверял следующие варианты:
person_listView = CollectionViewSource.GetDefaultView(ds.person_list); и вызов add_to_visual происходит в одном основном потоке.
Создавал новый пустой проект в котором использовал ICollectionView в качестве Binding, то HashCode приходит правильный(одинаковый)
Думал, что виртуализация виновата, применил стили из старого проекта к новому пустому, ошибку не получил. Хотя в принципе виртуализация регенерирует объекты в визуальном дереве, так что по моему не должно задействовать данные из ViewModel.
Может кто-то сталкивался с подобной проблемой- из-за чего появляются новые объекты из View?
...
Рейтинг: 0 / 0
Разные HashCode из View
    #39614659
Roman Mejtes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
для разных потокол представление коллекции будет разным. CollectionViewSource.GetDefaultView должен выполняться только в STA потоке, чтоб получить нужное представление.
Для других потоков будцт создаваться отдельные представления
...
Рейтинг: 0 / 0
Разные HashCode из View
    #39614677
vb_sub
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Roman Mejtes,

Код: c#
1.
2.
  person_listView = CollectionViewSource.GetDefaultView(ds.person_list);
     public ICollectionView person_listView { get; set; }



и add_to_visual выполняются в основном потоке.
...
Рейтинг: 0 / 0
3 сообщений из 3, страница 1 из 1
Форумы / WPF, Silverlight [игнор отключен] [закрыт для гостей] / Разные HashCode из View
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]