Гость
Форумы / WPF, Silverlight [игнор отключен] [закрыт для гостей] / mvvm в контексте разработки user control / 9 сообщений из 9, страница 1 из 1
27.06.2011, 14:47
    #37325953
Esofter
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
mvvm в контексте разработки user control
Делаю юзер контрол, хочется сделать по шаблону мввм

Проблема собственно вот в чем. Во всех примерах имеется некий Application в методе onStartup() которого мы инициализируем ДатаКонтекст представления и показываем его методом Show(). А как показывать контролы?
...
Рейтинг: 0 / 0
27.06.2011, 14:58
    #37325974
МСУ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
mvvm в контексте разработки user control
А зачем руками создавать контекст? Декларативно работайте.

Код: plaintext
xmlns:model="clr-namespace:...Categories.Models"

Код: plaintext
1.
2.
<navigation:Page.DataContext>
    <model:CategoryViewModel />
</navigation:Page.DataContext>
...
Рейтинг: 0 / 0
27.06.2011, 15:00
    #37325979
Esofter
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
mvvm в контексте разработки user control
проблема не в этом
...
Рейтинг: 0 / 0
27.06.2011, 15:26
    #37326043
Esofter
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
mvvm в контексте разработки user control
вопрос снят
...
Рейтинг: 0 / 0
27.06.2011, 20:59
    #37326494
МСУ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
mvvm в контексте разработки user control
Esofterпроблема не в этом
Слушаю.
Esofterвопрос снят
Разверните ответ, а не плюйте семячками там, где находитесь.
...
Рейтинг: 0 / 0
29.06.2011, 13:32
    #37328784
Esofter
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
mvvm в контексте разработки user control
в общем с тем я уже разобрался. сейчас проблема с паттерном ICommand

Есть кнопка

Код: plaintext
1.
2.
3.
<Button Content="login" Height="23" HorizontalAlignment="Left" Margin="271,94,0,0" Name="btnLogin" VerticalAlignment="Top" Width="75"
                Command="{Binding LoginCommand}"
                />

а вот кусок ВьюМодел

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
public ICommand LoginCommand
        {
            get
            {
                if(_loginCommand!=null)
                {
                    _loginCommand = new RelayCommand(p => DoLogin(),
                                                        p => CanDoLogin());
                }
                return _loginCommand;
            }
        }

      
        public void DoLogin()
        {
            if(!CanDoLogin()) return;
            
        }

       
        public bool CanDoLogin()
        {
            return true;
            return !string.IsNullOrEmpty(_login)
                   && !string.IsNullOrEmpty(_password)
                   && !string.IsNullOrEmpty(_companyName);
        }


ставил брекпоинт - биндинг отрабатывает, но когда жмакаю на кнопку - никакой реакции. В чем может быть проблема?
...
Рейтинг: 0 / 0
29.06.2011, 13:34
    #37328795
Esofter
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
mvvm в контексте разработки user control
то есть при биндинге мы пападаем к свойству LoginCommand. которое возвращает нам комманду, но вот когда жмакнуть кнопку - должен выполнятся метод DoLogin. Но не выполняется.
...
Рейтинг: 0 / 0
29.06.2011, 13:35
    #37328799
Esofter
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
mvvm в контексте разработки user control
ах да. Релай комманд

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
public class RelayCommand : ICommand
{
    #region Fields

    readonly Action<object> _execute;
    readonly Predicate<object> _canExecute;        

    #endregion // Fields

    #region Constructors

    public RelayCommand(Action<object> execute)
    : this(execute, null)
    {
    }

    public RelayCommand(Action<object> execute, Predicate<object> canExecute)
    {
        if (execute == null)
            throw new ArgumentNullException("execute");

        _execute = execute;
        _canExecute = canExecute;           
    }
    #endregion // Constructors

    #region ICommand Members

    [DebuggerStepThrough]
    public bool CanExecute(object parameter)
    {
        return _canExecute == null ? true : _canExecute(parameter);
    }

    public event EventHandler CanExecuteChanged
    {
        add { CommandManager.RequerySuggested += value; }
        remove { CommandManager.RequerySuggested -= value; }
    }

    public void Execute(object parameter)
    {
        _execute(parameter);
    }

    #endregion // ICommand Members
}


...
Рейтинг: 0 / 0
29.06.2011, 14:11
    #37328917
Esofter
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
mvvm в контексте разработки user control
детская ошибка :)

в проверке

Код: plaintext
1.
2.
3.
4.
5.
if(_loginCommand!=null)
                {
                    _loginCommand = new RelayCommand(p => DoLogin(),
                                                        p => CanDoLogin());
                }

инициализировать loginCommand надо если он нулл, а у меня наоборот :)
механическая ошибка
...
Рейтинг: 0 / 0
Форумы / WPF, Silverlight [игнор отключен] [закрыт для гостей] / mvvm в контексте разработки user control / 9 сообщений из 9, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]