Arhn - архитектура программирования

WPF: применение преобразователя к ItemsSource

можно ли применить преобразователь к источнику данных элемента управления в xaml?

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

В основном у меня есть настраиваемый элемент управления, который принимает определенный тип объекта. этот объект тесно связан с этим элементом управления. Я не хочу преобразовывать в этот тип всю мою модель представления. Поэтому я хотел бы иметь возможность привязываться к обычным свойствам, таким как список, и автоматически переводить их в мой объект с помощью преобразователя.

Я пробовал что-то вроде этого.

ItemsSource="{Binding CurrentTables, Converter={x:Static cconverters:SpyFilterDataObjectConverter}}" 
20.05.2011


Ответы:


1

Ну мне такие преобразователи не кажутся хорошими. По сути, конвертер выполняет операцию преобразования только один раз, поэтому вы не будете получать никаких обновлений. Я использовал другой подход - просто создайте своего рода оболочку, содержащую начальную коллекцию (она должна реализовывать INotifyCollectionChanged) и некоторые стратегии переноса, которые преобразуют ваш исходный объект в обернутый.

20.05.2011
  • это было бы здорово ... но я использую MVVM ... поэтому мой элемент управления привязан к свойству зависимости в модели представления. не уверен, как внедрить оболочку в середине этой привязки.. чтобы она реагировала на любые изменения свойства.. 21.05.2011
  • Вы не должны передавать эту обертку в привязку, просто создайте экземпляр обертки, передайте свою коллекцию в эту обертку и привяжите свое свойство к обертке. Используя этот подход, оболочка будет инкапсулировать всю логику преобразования, как черный ящик. Видишь, что я имею в виду? Кстати, знаете ли вы, что ваша модель представления может реализовать INotifyPropertyChanged? Это означает, что вы можете исключить DependencyObject из вашей иерархии докладчиков. 23.05.2011
  • если бы я передавал свою коллекцию с помощью кода, то все это было бы довольно просто решить. Моя трудность связана с тем, что я использую MVVM, и я просто привязываюсь к свойствам модели представления, которые представляют собой стандартные списки строк/объектов и т. д. Я хочу плавно переводить эти объекты в определенный тип каждый раз, когда список изменяется 23.05.2011
  • как использование INotifyPropertyChanged со свойствами зависимостей помогает решить эту проблему? 23.05.2011
  • Что касается вопроса об INotifyPropertyChanged - это использование не может помочь вам решить вышеупомянутую проблему. Просто рекомендация, не более. Извините, я до сих пор не понимаю, почему бы вам просто не создать обертку, которую я описываю, и агрегировать эту обертку по вашей модели просмотра.... 23.05.2011

  • 2

    x:Static имеет синтаксис namespace:Type.StaticMember, вы должны создать экземпляр преобразователя и предоставить его как статическое свойство.

    В качестве альтернативы вы можете создать экземпляр в Application.Resources в своем App.xaml, а затем вы можете ссылаться на него как на статический ресурс во всем приложении, используя его ключ.

    20.05.2011
    Новые материалы

    Коллекции публикаций по глубокому обучению
    Последние пару месяцев я создавал коллекции последних академических публикаций по различным подполям глубокого обучения в моем блоге https://amundtveit.com - эта публикация дает обзор 25..

    Представляем: Pepita
    Фреймворк JavaScript с открытым исходным кодом Я знаю, что недостатка в фреймворках JavaScript нет. Но я просто не мог остановиться. Я хотел написать что-то сам, со своими собственными..

    Советы по коду Laravel #2
    1-) Найти // You can specify the columns you need // in when you use the find method on a model User::find(‘id’, [‘email’,’name’]); // You can increment or decrement // a field in..

    Работа с временными рядами спутниковых изображений, часть 3 (аналитика данных)
    Анализ временных рядов спутниковых изображений для данных наблюдений за большой Землей (arXiv) Автор: Рольф Симоэс , Жильберто Камара , Жильберто Кейрос , Фелипе Соуза , Педро Р. Андраде ,..

    3 способа решить квадратное уравнение (3-й мой любимый) -
    1. Методом факторизации — 2. Используя квадратичную формулу — 3. Заполнив квадрат — Давайте поймем это, решив это простое уравнение: Мы пытаемся сделать LHS,..

    Создание VR-миров с A-Frame
    Виртуальная реальность (и дополненная реальность) стали главными модными терминами в образовательных технологиях. С недорогими VR-гарнитурами, такими как Google Cardboard , и использованием..

    Демистификация рекурсии
    КОДЕКС Демистификация рекурсии Упрощенная концепция ошеломляющей О чем весь этот шум? Рекурсия, кажется, единственная тема, от которой у каждого начинающего студента-информатика..