-22 / 28 / 2
Регистрация: 17.03.2018
Сообщений: 758
|
||||||
1 | ||||||
IValueConverter зачем два object?04.01.2019, 17:37. Показов 1582. Ответов 39
Метки нет (Все метки)
Зачем два обекта здесь?
0
|
04.01.2019, 17:37 | |
Ответы с готовыми решениями:
39
IValueConverter и параметры WindowState, Binding, IValueConverter Не работает преобразование значений при биндинге (IValueConverter) Непостоянное исключение Cannot access a disposed object. Object name: 'System.Net.Sockets.NetworkStream' |
17793 / 12944 / 3381
Регистрация: 17.09.2011
Сообщений: 21,226
|
|
04.01.2019, 17:43 | 2 |
В документации интерфейса не пробовали смотреть?
0
|
-22 / 28 / 2
Регистрация: 17.03.2018
Сообщений: 758
|
|
04.01.2019, 17:48 [ТС] | 3 |
Эту
документацию как обычно писали, те кто уже знает. И ес-но как всегда поленились или забыли написать самое главное и нужное для меня. )Не найду пример в сети когда Value зависит от логики, например двух Boolean vars.
0
|
17793 / 12944 / 3381
Регистрация: 17.09.2011
Сообщений: 21,226
|
|
04.01.2019, 18:46 | 4 |
Простите, немного не понял эту фразу.
А кто должен документацию писать? Те, кто не знает? Снова не понял. У вас есть какая-то конкреная проблема, которую вы пытаетесь решить через IValueConverter и не знаете как реализовать? Или просто хотите примеры конвертеров, где используются оба параметра? Если первое, то начните с конкретных вопросов, а если второе, то по указанной выше ссылке приведен список встроенных в .NET классов, реализующих интерфейс IValueConverter. Достаточно почитать их документацию и посмотреть — используется ли второй параметр object и если да, то для чего — там все задокументировано. Для закрепления знаний можно создать обычный консольный проект и поиграться с вызовом Convert этих классов с разными параметрами, при этом смотря на возвращаемое значение.
0
|
-22 / 28 / 2
Регистрация: 17.03.2018
Сообщений: 758
|
||||||
04.01.2019, 19:04 [ТС] | 5 | |||||
не знаю как реализовать:
Код нерабочий. Так сказать, понять что нужно.
Добавлено через 6 минут Как-то так.
0
|
17793 / 12944 / 3381
Регистрация: 17.09.2011
Сообщений: 21,226
|
|
04.01.2019, 19:13 | 6 |
Что такое А и В? Свойства класса, реализующего интерфейс?
Что предполагается передавать в качестве value? true/false, на которые проверяются A и B? Опишите саму задачу, которую вы пытаетесь решить.
0
|
-22 / 28 / 2
Регистрация: 17.03.2018
Сообщений: 758
|
|
04.01.2019, 19:20 [ТС] | 7 |
есть bool A и bool B (находятся в классе, например Box), если A && B == false, конвертер выводит Brush.White.
Если A && B == true, конвертер выводит Brush.Green. Такой конвертер (без логики) у меня работает без проблем. но мне нужно реализовать с двумя и более vars.
0
|
04.01.2019, 19:28 | 8 |
Я тоже считаю что нужно сначала выложить пример разметки и описания цели задачи, но уже предположу, что ТСу нужен вот такой интерфейс - IMultiValueConverter. Пример кода: WPF IValueConverter - converting multiple values into a single value
Добавлено через 2 минуты Тогда можно было бы создать свойство в классе, которое бы отвечало за логику генерации нужного цвета. И в разметке биндиться уже к нему. И в конвертере уже использовать только одно значение. Причём можно даже уже и конвертер не использовать.
0
|
-22 / 28 / 2
Регистрация: 17.03.2018
Сообщений: 758
|
|
04.01.2019, 19:36 [ТС] | 9 |
0
|
Модератор
|
|
04.01.2019, 21:13 | 10 |
Раз у Вас есть более одного (в Вашем случае два) значения к которым надо привязываться, то Вам нужен не конвертер, а мультиконвертер. Наследуется от IMultiValueConverter.
Добавлено через 3 минуты Если в данных есть два свойства, совместное состояние которых надо ОТОБРАЗИТЬ определённым образом (в данном случае цветом), то это делать надо через WPF мультиконвертер. Если же, эти свойства влияют на СОСТОЯНИЕ данных, то это надо реализовывать в VM или в Model. Добавлено через 1 минуту Bulky, хотя, если это касается не обобщённого, типового случая, а единичного - то это надо делать через стиль и триггера.
0
|
-22 / 28 / 2
Регистрация: 17.03.2018
Сообщений: 758
|
|
04.01.2019, 21:16 [ТС] | 11 |
Вчера однокурсник заявил, что
Одно . Сегодня ближе к обеду это Одно заработало.Но тут звонит, что уже Не Одно . Теперь оказывается есть Мультиконвертер.Буду искать в сети примеры работы МультиКонвертера и подойдет ли он к Адронному Коллайдеру .
0
|
04.01.2019, 22:03 | 12 | ||||||||||
Как я понял, задача вытекла из соседней темы.
Почему нельзя сделать в виде простого свойства? Вот этот код выделить в свойство и привязаться к нему. Оно будет содержать уже нужное значение. И так как логика не простая, то лучше и оставить её (по моему мнению) прямо во вьюмодели (или сервисе). Но не глубоко, в конвертерах. Так как потом никто не поймёт почему простой конвертер выдаёт какой-то непонятный результат или вообще падает (так как нет доступа к нужным свойствам или значениям).
0
|
-22 / 28 / 2
Регистрация: 17.03.2018
Сообщений: 758
|
|
04.01.2019, 22:10 [ТС] | 13 |
У самих "истоков" A,B,C опрашиваются циклично, прилетают в VM, где становятся свойствами затем попадают через биндинг в XAML. Вроде как "забор" VM реализован. Хотя я его не вижу и не могу потрогать. )
0
|
Модератор
|
|
04.01.2019, 23:04 | 14 |
Если свойства A, B, С - это свойства самой VM, с нормальной реализацией INPC, то проще всего это сделать через триггера в XAML. Это это больше всего будет соответствовать "духу" WPF.
Добавлено через 40 минут Интересно посмотреть на эту реализацию....
0
|
-22 / 28 / 2
Регистрация: 17.03.2018
Сообщений: 758
|
||||||
05.01.2019, 18:04 [ТС] | 15 | |||||
Элд Хасп,
а по фэншую ли когда, имя вновь созданного свойства совпадает с именем variable которую "биндишь"? Например:
0
|
Модератор
|
|
05.01.2019, 18:28 | 16 |
Ну, желательно давать имена которые делают код более читабельным. Если одинаковые имена этому помогают, то почему нет?
Другое дело, что в реале такое маловероятно. Обычно свойства VM отражают некое состояние Model, и для большей читабельности имена им дают соответствующие.
0
|
-22 / 28 / 2
Регистрация: 17.03.2018
Сообщений: 758
|
|
05.01.2019, 18:46 [ТС] | 17 |
Имена одних и тех же vars по разные стороны VM по какому принципу даете? Пример???
Добавлено через 13 минут Элд Хасп, Добавляя два новых свойства в UC, и "выкручивая" себе мозг как назвать по фэншую новые свойства, добавил префикс 'Property_' к имени свойства. Скомпилил, никаких ошибок. Но XAML ругнулся на то, что такое уже есть. В поисках чуть не поседел, ну нет такого имени. Заменил Property на Prop, - ошибка ушла. Мораль такова, -избегайте слова Property в имени свойства.
0
|
1151 / 743 / 483
Регистрация: 21.01.2014
Сообщений: 1,903
|
||||||
05.01.2019, 22:04 | 19 | |||||
https://github.com/Egor92/WPFSamples
0
|
Модератор
|
|
05.01.2019, 23:58 | 20 |
Lexeq, и каким образом она работает если не передавать propertyName ? (см. Разница между просто Ellipse и Ellipse который лежит основе User Control)
Добавлено через 50 секунд Какая-то "кривая" реализация.... Добавлено через 25 минут Не совсем понимаю, что Вы подразумеваете под разными сторонами. У VM только одна "сторона" обращённая к View. Model ничего не знает о VM и у VM не может быть "стороны" для Model. Перед созданием VM надо создать View. А View лучше всего начинать создавать с VMDD. У VMDD создаются свойства для привязки WPF элементов. Так как VMDD сама ничего не знает об окне, его элементах, то какой смысл создавать свойства с названиями элементов? Может потом надо будет к этому свойству привязать десяток элементов? Другое дело, если название свойства отображает состояние данных (напрямую или после преобразования, обработки), то тогда создавая в окне привязки элементов Вам видны свойства VMDD и названия этих свойств напоминают об отображаемых данных. Это удобно. Другое дело, создание UC. В этом случае CB UC - это часть View окна. UC создаётся для инкапсуляции взаимодействия между группой элементов, либо для создания элемента с новым поведением. И данными в таком случае выступают свойства элементов. В таком случае свойства VM (то есть CB окна) вполне разумно и удобно называть созвучно со свойствами элементов. Но это всё моё представление об удобно-неудобном.
0
|
05.01.2019, 23:58 | |
05.01.2019, 23:58 | |
Помогаю со студенческими работами здесь
20
NullreferenceExeption was unhandled Object reference not set to an instance of an object Object = Object или как сравнить два объекта? Зачем используется приведение к Object в Stack<T>.Contains()? Зачем оператору lock в качестве параметра нужен объект (object) Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Блоги программистов | |||||
Как перейти с Options API на Composition API в Vue.js
BasicMan 06.01.2025
Почему переход на Composition API актуален
В мире современной веб-разработки фреймворк Vue. js продолжает эволюционировать, предлагая разработчикам все более совершенные инструменты для создания. . .
|
Архитектура современных процессоров
inter-admin 06.01.2025
Процессор (центральный процессор, ЦП) является основным вычислительным устройством компьютера, которое выполняет обработку данных и управляет работой всех остальных компонентов системы. Архитектура. . .
|
История создания реляционной модели баз данных, правила Кодда
Programming 06.01.2025
Предпосылки создания реляционной модели
В конце 1960-х годов компьютерная индустрия столкнулась с серьезными проблемами в области управления данными. Существовавшие на тот момент модели данных -. . .
|
Полезные поделки на Arduino, которые можно сделать самому
raxper 06.01.2025
Arduino как платформа для творчества
Arduino представляет собой удивительную платформу для технического творчества, которая открывает безграничные возможности для создания уникальных проектов. Эта. . .
|
Подборка решений задач на Python
IT_Exp 06.01.2025
Целью данной подборки является предоставление возможности ознакомиться с различными задачами и их решениями на Python, что может быть полезно как для начинающих, так и для опытных программистов.
. . .
|
С чего начать программировать микроконтроллеры
raxper 06.01.2025
Введение в мир микроконтроллеров
Микроконтроллеры стали неотъемлемой частью современного мира, окружая нас повсюду: от простых бытовых приборов до сложных промышленных систем. Эти маленькие. . .
|
Из чего собрать игровой компьютер
inter-admin 06.01.2025
Сборка игрового компьютера требует особого внимания к выбору комплектующих и их совместимости. Правильно собранный игровой ПК не только обеспечивает комфортный геймплей в современных играх, но и. . .
|
Обновление сайта www.historian.by
Reglage 05.01.2025
Обещал подвести итоги 2024 года для сайта. Однако начну с того, что изменилось за неделю. Добавил краткий урок по последовательности действий при анализе вредоносных файлов и значительно улучшил урок. . .
|
Как использовать GraphQL в C# с HotChocolate
Programming 05.01.2025
GraphQL — это современный подход к разработке API, который позволяет клиентам запрашивать только те данные, которые им необходимы. Это делает взаимодействие с API более гибким и эффективным по. . .
|
Модель полного двоичного сумматора с помощью логических операций (python)
AlexSky-coder 04.01.2025
def binSum(x:list, y:list):
s=^y]
p=x and y
for i in range(1,len(x)):
s. append((x^y)^p)
p=(x and y)or(p and (x or y))
return s
x=list()
y=list()
|
Это мы не проходили, это нам не задавали...(асихронный счётчик с управляющим сигналом задержки).
Hrethgir 04.01.2025
Асинхронный счётчик на сумматорах (шестиразрядный по числу диодов на плате, но наверное разрядов будет больше - восемь или шестнадцать, а диоды на старшие), так как триггеры прошли тестирование и. . .
|
Руководство по созданию бота для Телеграм на Python
IT_Exp 04.01.2025
Боты для Телеграм представляют собой автоматизированные программы, которые выполняют различные задачи, взаимодействуя с пользователями через интерфейс мессенджера. В данной статье мы рассмотрим,. . .
|