MVVM и команды, которые показывают больше GUI

hash foo 2>/dev/null : работает с Zsh, Bash, Dash и Ash.

type -p foo: кажется, что он работает с zsh, bash и ash (busybox), но не с dash (интерпретирует -p как аргумент).

command -v foo: работает с zsh, bash, dash, но не с ash (busybox) (-ash: command: not found).

Также обратите внимание, что builtin недоступно с ash и dash.

6
задан Dave Clemmer 3 August 2011 в 05:17
поделиться

2 ответа

Обычно я использую Dependency Injection, чтобы внедрить какую-то абстрактную вещь IShowTheInterface, а затем вызвать методы абстракции из Command. Затем эти методы должны дать вам ответы, необходимые для определения того, следует ли вообще продолжать действие, и какие данные ввел пользователь.

Недавно я использовал это в качестве примера в сообщении блога с небольшим другая тема .

4
ответ дан 17 December 2019 в 04:51
поделиться

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

ViewModel зависит от приложения, и не рекомендуется бесконечно расширять ViewModelBase. Вместо этого создайте поведения, которые можно использовать повторно, чтобы расширить представление. Есть несколько примеров поведения в галерее смешения выражений

РЕДАКТИРОВАТЬ:

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

<Button Content="Open Document">
    <i:Interaction.Behaviors>
        <local:FileOpenBehavior 
            FileNameTarget="{Binding ElementName=tbDocName}"/>
    </i:Interaction.Behaviors>
</Button>

В приведенном выше примере tbDocName можно скрыть или привязать к свойству ModelView.

1
ответ дан 17 December 2019 в 04:51
поделиться
Другие вопросы по тегам:

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