hamid18 Ответов: 1

Можем ли мы использовать pointcollection в viewmodel в WPF aaplication?


Я хочу построить график для различных объектов на холсте в представлении. Могу ли я использовать PointCollection для хранения точек для различных объектов. И сделайте свойство типа PointCollection. Затем в xaml я свяжу строку с этим свойством PointCollection.

Что я уже пробовал:

Мне просто нужно знать, возможно это или нет.

Richard MacCutchan

Вы можете узнать, возможно ли это, попробовав его в тестовой программе.

hamid18

Я новичок в mvvm и wpf. Поэтому я не уверен, можем ли мы использовать PointCollection в Viewmodel или нет. Потому что в mvvm мы не можем использовать какой-либо элемент управления представлением.

#realJSOP

Он сказал, Попробуй и увидишь. "Могу ли я это сделать?" - глупый вопрос для разработчика. Почему? Потому что это убедительно демонстрирует отсутствие инициативы или даже способности гуглить, как что-то сделать. Разработчики сегодня имеют гораздо более свободный доступ к более обширным ресурсам, чем мы делали в дни до google, но они отказываются использовать эти инструменты. Я скорблю по индустрии программного обеспечения в целом. Удачи вам в любом призвании, потому что это не будет разработка программного обеспечения, если вы не можете найти/развить навык использования google.

hamid18

извиняюсь.. я пытаюсь учиться.. я не публикую вопрос, не поискав его в google. я новичок в программировании. из-за отсутствия опыта иногда у меня случается то, что я не понимаю в интернете. в будущем я буду осторожен..

1 Ответов

Рейтинг:
1

Graeme_Grant

Лучшее место для проверки-в документации: Класс PointCollection (System.Окна.СМИ) | Майкрософт Документы[^]

Если вы смотрите на использование шаблона проектирования MVVM, то вы смотрите на использование Привязка данных (WPF) | Microsoft Docs[^] . Чтобы привязка данных работала с XAML, вам необходимо подключиться к системе уведомлений о привязке данных. Глядя на PointCollection код из ссылки выше, он этого не делает:

[System.ComponentModel.TypeConverter(typeof(System.Windows.Media.PointCollectionConverter))]
public sealed class PointCollection : System.Windows.Freezable, IFormattable, System.Collections.Generic.ICollection<System.Windows.Point>, System.Collections.Generic.IEnumerable<System.Windows.Point>, System.Collections.Generic.IList<System.Windows.Point>, System.Collections.IList

Что вам нужно сделать, так это написать оболочку прокси - класса для PointCollection класс, реализующий как System.Collections.Specialized.INotifyCollectionChangedи System.ComponentModel.INotifyPropertyChanged интерфейсы для правильной работы привязки данных.

Чтобы увидеть пример этого, взгляните на коллекцию Привязок данных ObservableCollection<T> Class (System.Коллекции.Модель)[^].