Контроллеры в MVVM, Как получить информацию от viewmodel до, он - контроллер?

Или Вы хотели просто видеть, имеет ли столбец только Нулевые значения (и, таким образом, вероятно, не использовано)?

Дальнейшее разъяснение вопроса могло бы помочь.

РЕДАКТИРОВАНИЕ: хорошо.. вот некоторый действительно грубый код для получения Вас движение...

SET NOCOUNT ON
DECLARE @TableName Varchar(100)
SET @TableName='YourTableName'
CREATE TABLE #NullColumns (ColumnName Varchar(100), OnlyNulls BIT)
INSERT INTO #NullColumns (ColumnName, OnlyNulls) SELECT c.name, 0 FROM syscolumns c INNER JOIN sysobjects o ON c.id = o.id AND o.name = @TableName AND o.xtype = 'U'
DECLARE @DynamicSQL AS Nvarchar(2000)
DECLARE @ColumnName Varchar(100)
DECLARE @RC INT
    SELECT TOP 1 @ColumnName = ColumnName FROM #NullColumns WHERE OnlyNulls=0
    WHILE @@ROWCOUNT > 0
    BEGIN
        SET @RC=0
        SET @DynamicSQL = 'SELECT TOP 1 1 As HasNonNulls FROM ' + @TableName + ' (nolock) WHERE ''' + @ColumnName + ''' IS NOT NULL'
        EXEC sp_executesql @DynamicSQL
        set @RC=@@rowcount
        IF @RC=1
        BEGIN
            SET @DynamicSQL = 'UPDATE #NullColumns SET OnlyNulls=1 WHERE ColumnName=''' + @ColumnName + ''''
            EXEC sp_executesql @DynamicSQL
        END
        ELSE
        BEGIN
            SET @DynamicSQL = 'DELETE FROM #NullColumns WHERE ColumnName=''' + @ColumnName+ ''''
            EXEC sp_executesql @DynamicSQL
        END
    SELECT TOP 1 @ColumnName = ColumnName FROM #NullColumns WHERE OnlyNulls=0
    END

SELECT * FROM #NullColumns

DROP TABLE #NullColumns
SET NOCOUNT OFF

Да, существуют более легкие пути, но у меня есть встреча для движения в прямо сейчас.Удачи!

10
задан Mat 31 October 2011 в 17:28
поделиться

4 ответа

We use Controllers too but in our case they are responsible for the application workflow. The Controller knows the ViewModel and the Model but not the concrete View because this will be injected by the IoC Container.

If you are interested in an example that shows more than just one UI (modal dialog, wizard with conditional workflow) then you might have a look at:

WPF Application Framework (WAF) - http://waf.codeplex.com

3
ответ дан 4 December 2019 в 00:25
поделиться

Может ли ваша ViewModel не зависеть от IController или какого-либо другого интерфейса, чтобы они могли ответить на него? Я стараюсь убрать как можно больше логики приложения из ViewModel, поскольку эти классы могут легко раздуться.

 MyViewModel(IController controller)
 {
     this.controller = controller;
 }

 void Save()
 {
     this.controller.Save();
 }

Я согласен с тем, что инфраструктуры MVVM имеют тенденцию быть слишком упрощенными с их образцами. В частности, мне хотелось бы увидеть больше примеров перемещения между представлениями / экранами в вашем приложении. Я создаю интерфейс IViewManager, чтобы позволить моим моделям просмотра запрашивать переход к другому виду.

6
ответ дан 4 December 2019 в 00:25
поделиться

Я использую аналогичную вам настройку. В моем контроллере, где мой DI и инъекция представления прекращается, я иногда сохраняю ссылку на ViewModel (который содержит View). В некоторых случаях у меня может быть событие на виртуальной машине, которое обрабатывается контроллером. В других крайних случаях (например, если виртуальная машина / виртуальная машина была создана вне контроллера, скажем, в другой виртуальной машине), я могу даже использовать EventAggregator (с сильной ссылкой) для прослушивания событий, которые могут быть запущены на виртуальной машине. В этом случае сохраненная ссылка на виртуальную машину не требуется.

1
ответ дан 4 December 2019 в 00:25
поделиться

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

0
ответ дан 4 December 2019 в 00:25
поделиться
Другие вопросы по тегам:

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