Интерпретация различных свойств некоторого константного объекта в WPF - PullRequest
0 голосов
/ 24 апреля 2019

У меня есть пакет данных, это тело состоит из байтового массива.Также мне нужно интерпретировать поля пакета в нескольких вариациях, но тело остается неизменным.Например: AA-BB-CC-DD-EE-FF - тело постоянного пакета.В первой интерпретации: AA-BB-CC - в качестве параметра 1 и DD-EE-FF - в качестве параметра 2. Во втором варианте: AA-BB - в качестве параметра 3, CC-DD - параметр 4 и EE-FF - параметр 5. И т. д.

Я вижу несколько вариантов реализациитакое поведение:

  1. В одном классе создайте все необходимые свойства (параметр 1 ... параметр 5), а в классе вызывающего проверьте флаг варианта.
  2. Создайте несколько производных классов, и каждый класс содержит только определенные свойства (параметры 1 и 2 в первом случае, параметры от 3 до 5 - во втором).

Теперь, чтобы показать пакеты в WPF, я использую 1-й вариант.У меня есть ListView и его стиль как GridView:

<ListView x:Name="lv" />

Когда мне нужно визуализировать пакеты в первой интерпретации:

lv.Style = CType(TryFindResource("packetsStyle_1"), Style)

packagesStyle_1 содержит столбцы "Параметр 1"и" Параметр 2 ".

Когда мне нужно визуализировать пакеты в другой интерпретации, я просто изменяю стиль ListView:

lv.Style = CType(TryFindResource("packetsStyle_2"), Style)

packagesStyle_2 содержит столбцы«Параметр 3», «Параметр 4» и «Параметр 5».

Этот вид реализации не является объектно-ориентированным, как я понимаю.Я хочу сделать это с ООП (вариант 2) - базовый класс пакета с общими свойствами и унаследованные классы с конкретными свойствами.Но как WPF способ обновить GUI в этом случае?Нужно ли создавать два объекта List (из PacketVar1) и List (из PacketVar2) и изменять источник и стиль элемента ListView?Но список пакетов достаточно велик и занимает много памяти.Или какая правильная реализация?

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