MVVM - Представление действительно нуждаются, должны иметь конструктора по умолчанию?

Ну, мы сталкивались с подобной задачей и раньше, и я бы сказал, что Solr не может фильтровать вычисленные значения. Либо вы можете получить весь фасет, установив предел равным -1, и тогда будет некоторая оболочка (WEB API), которую вам нужно будет написать поверх вашего поискового приложения, которая отфильтрует список фасетов.

json.facet={cty:{type:terms,field:country,limit:-1,facet:{sum_value:”sum(population)”}}}

Или вы можете предварительно рассчитать сумму населения для каждой страны перед индексацией. Посмотрите на таблицу ниже.

| Страна | Население | Total_Population |

| C1 | 12 | 25 |
| C1 | 13 | 25 |
| С2 | 14 | 49 |
| С2 | 35 | 49 |

Позже вы можете напрямую фильтровать поле Total_Population с помощью фильтра запросов. Кроме того, вы сэкономите много времени, не агрегируя в реальном времени.

7
задан Jacob Stanley 24 April 2009 в 06:00
поделиться

3 ответа

Как вы правильно поняли, требование конструктора не по умолчанию будет запрещать вам использовать этот элемент управления из XAML. Это также означает, что дизайн-поддержка больше не будет, и ваши дизайнеры, вероятно, будут вас ненавидеть. Наконец, вы нарушаете все виды хороших сценариев привязки данных. Как и использование элемента управления в качестве ItemTemplate .

В качестве исправления для отсутствующей поддержки дизайна , я бы предложил реализовать конструктор по умолчанию, который создает макет модели представления, которая не нужна любая инфраструктура. Таким образом, вы можете очень элегантно поддерживать режим разработки, и помещение представления в файл XAML (например, для тестирования) сделает что-то разумное.

В качестве средства устранения отсутствует поддержка привязки данных , вам следует подумать, не лучше ли использовать модель представления через DataContext вашего элемента управления WPF. Это часто встречается в WPF и - насколько я могу судить - предполагаемый способ передачи модели в представление в WPF.

8
ответ дан 7 December 2019 в 05:30
поделиться

Чтобы поддерживать дизайнер, вам нужен конструктор по умолчанию. Когда вы определяете свой собственный конструктор, вы в основном теряете автоматически сгенерированный конструктор по умолчанию. Просто создайте явный конструктор по умолчанию, и все будет в порядке.

0
ответ дан 7 December 2019 в 05:30
поделиться

Assuming that you don't need designer support then I see no reasons.

0
ответ дан 7 December 2019 в 05:30
поделиться
Другие вопросы по тегам:

Похожие вопросы: