Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / WPF, Silverlight [игнор отключен] [закрыт для гостей] / MVVM вызвать метод Control-а / 25 сообщений из 41, страница 1 из 2
02.06.2010, 09:58
    #36663089
AlexHome
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MVVM вызвать метод Control-а
Как вызвать метод контрола используя паттерн mvvm??????
...
Рейтинг: 0 / 0
02.06.2010, 10:28
    #36663166
AlexHome
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MVVM вызвать метод Control-а
задам вопрос более расширенно:
есть View:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
<UserControl
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:sdk="http://schemas.microsoft.com/winfx/2006/xaml/presentation/sdk" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" mc:Ignorable="d" x:Class="Simple.Modules.A.MainView"
    xmlns:i="clr-namespace:System.Windows.Interactivity;assembly=System.Windows.Interactivity"    
    d:DesignWidth="309" d:DesignHeight="246">
    
	<StackPanel>
		<sdk:Label Content="Логин"/>
        <TextBox TextWrapping="Wrap" Text="{Binding LoginText, Mode=TwoWay}"/>
		<sdk:Label Content="Пароль"/>
        <TextBox TextWrapping="Wrap" Text="{Binding PasswordText, Mode=TwoWay}" TextChanged="TextBox_TextChanged" Name="TextBox1" />
        <Button Content="{Binding ButtonContent}" Margin="0,8,0,0">
            <i:Interaction.Triggers>
                <i:EventTrigger EventName="MouseMove">
                    <i:InvokeCommandAction Command="{Binding MessageBoxCommand}" CommandParameter="{Binding RelativeSource={RelativeSource Self}, Path=InvokeParameter}">
                    </i:InvokeCommandAction>
                </i:EventTrigger>
            </i:Interaction.Triggers>
        </Button>
	</StackPanel>
</UserControl>
есть CodeBehind:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
namespace Simple.Modules.A
{
    /// <summary>
    /// Interaction logic for DefaultViewA.xaml
    /// </summary>
    public partial class MainView : UserControl
    {
        public MainView(MainViewModel model)
        {
            InitializeComponent();
            this.Loaded += (s, e) =>
                               {
                                   this.DataContext = model;
                               };
        }

    }
}
и соответственно ViewModel:
Код: 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.
namespace Simple.Modules.A
{
    public class MainViewModel : ViewModel
    {
        public MainViewModel()
        {
            this.messageBoxCommand = new CommandModel(OnMessageBoxCommand);       
        }
        private string _loginText = "";
        public string LoginText
        {
            get { return _loginText; }
            set { _loginText = value; }
        }

        private string _passwordText = "";
        public string PasswordText
        {
            get { return _passwordText; }
            set { _passwordText = value; }
        }

        private string _buttonContent = "СуперВход";
        public string ButtonContent 
        {
            get { return _buttonContent; }
        }

        private ICommand messageBoxCommand;
        public ICommand MessageBoxCommand
        {
            get { return this.messageBoxCommand; }
        }
        private void OnMessageBoxCommand(object parameter)
        {
            LoginText += "1";
            this.InvokePropertyChanged("LoginText");
        }

    }
}

Каким образом допустим нажав кнопку Button вызвать метод TextBox-a ??????
...
Рейтинг: 0 / 0
02.06.2010, 11:42
    #36663401
Алексей К
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MVVM вызвать метод Control-а
Ну варианта-то два:

1. Передать ссылку на контрол во вьюмодель и вызывать его методы когда захочется. Нынче это не модно.

2. Сделать метод у View и делегировать вызов методу контрола. Это тоже не модно.

3. Мутить свойство во вьюмодели и биндить его на свойство контрола. Тут не забываем о новомодных присоединяемых свойствах.

Выбор как всегда за Вами. Главное помнить, что "не модно" - это не значит плохо.
...
Рейтинг: 0 / 0
02.06.2010, 11:43
    #36663405
Алексей К
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MVVM вызвать метод Control-а
Ну варианта-то два три.
...
Рейтинг: 0 / 0
02.06.2010, 11:50
    #36663433
AlexHome
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MVVM вызвать метод Control-а
Алексей КНу варианта-то два:

1. Передать ссылку на контрол во вьюмодель и вызывать его методы когда захочется. Нынче это не модно.

2. Сделать метод у View и делегировать вызов методу контрола. Это тоже не модно.

3. Мутить свойство во вьюмодели и биндить его на свойство контрола. Тут не забываем о новомодных присоединяемых свойствах.

Выбор как всегда за Вами. Главное помнить, что "не модно" - это не значит плохо.

ну блин не все так просто:
1) Полностью протеворечит концепции mvvm так как view является предстовлением модели и соответственно viewmodel ниче не знает про view
2) немного не догнал что иммелось ввиду
3) Тут тоже не догнал причем здесь свойства ViewModel и методы контрола как их увязать, свойства Controla и свойства ViewModel тут понятно что надо bind-ить

Единственно как вариант щас рассматриваю использование в CodeBehind view.cs, но че то как то тоже не есть хорошо!
...
Рейтинг: 0 / 0
02.06.2010, 11:58
    #36663469
Шайтан
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MVVM вызвать метод Control-а
Алексей К"не модно" - это не значит плохо.+стопятьсот
...
Рейтинг: 0 / 0
02.06.2010, 12:02
    #36663492
AlexHome
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MVVM вызвать метод Control-а
ШайтанАлексей К"не модно" - это не значит плохо.+стопятьсот
да это понятно просто не хочется начинать проект заведомо неправильными решениями, че то я уже засомневался в целесобразности применения данного паттерна, мне все чаще приходит мысль, что mvvm это html без javascript -а
...
Рейтинг: 0 / 0
02.06.2010, 12:06
    #36663509
von_der_Pschick
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MVVM вызвать метод Control-а
Гугл выдает по запросу "fucking mvvm" много интересных ссылок.
Вот, например.
...
Рейтинг: 0 / 0
02.06.2010, 12:09
    #36663525
AlexHome
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MVVM вызвать метод Control-а
von_der_PschickГугл выдает по запросу "fucking mvvm" много интересных ссылок.
Вот, например.
в принципе после слова "fucking" можно указать любую технологию, будет еще больше ссылок при поиске в google
...
Рейтинг: 0 / 0
02.06.2010, 12:12
    #36663541
von_der_Pschick
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MVVM вызвать метод Control-а
Я так понял для себя, что до MVVM надо дорасти последовательно. То есть вот когда так называемый спагетти-код тебя лично достанет, а не кого-то из придуманных маркетологами разработчиков в вакууме, тогда сам и начнешь подтягиваться к использованию ViewModel.

Но странное дело, хорошо структурированный Code-behind в сочетании с Model никому не мешает! Даже в немаленьких проектах с кучей View и их пересечением с правами юзеров и составными интерфейсами! Сколько бы не убеждали меня адепты MVVM в обратном.
...
Рейтинг: 0 / 0
02.06.2010, 12:14
    #36663548
ЛП
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MVVM вызвать метод Control-а
2 AlexHome
То, что вы хотите - вообще не MVVM
Именно по указаной вами же причине (viewmodel ниче не знает про view)
Используйте MVP или MVC, если для конкретной задачи оно больше подходит.
На MVVM свет клином не сошёлся.
...
Рейтинг: 0 / 0
02.06.2010, 12:17
    #36663557
AlexHome
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MVVM вызвать метод Control-а
AlexHome
Единственно как вариант щас рассматриваю использование в CodeBehind view.cs, но че то как то тоже не есть хорошо!


von_der_PschickЯ так понял для себя, что до MVVM надо дорасти последовательно. То есть вот когда так называемый спагетти-код тебя лично достанет, а не кого-то из придуманных маркетологами разработчиков в вакууме, тогда сам и начнешь подтягиваться к использованию ViewModel.

Но странное дело, хорошо структурированный Code-behind в сочетании с Model никому не мешает! Даже в немаленьких проектах с кучей View и их пересечением с правами юзеров и составными интерфейсами! Сколько бы не убеждали меня адепты MVVM в обратном.

вот к чему я и пришел, просто если есть другие решения именно в разрезе mvvm я готов выслушать
...
Рейтинг: 0 / 0
02.06.2010, 12:20
    #36663573
Шайтан
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MVVM вызвать метод Control-а
ЛПИспользуйте MVP или MVC, если для конкретной задачи оно больше подходит.
На MVVM свет клином не сошёлся.
сегодня просто день достойных афоризмов!
...
Рейтинг: 0 / 0
02.06.2010, 12:21
    #36663579
von_der_Pschick
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MVVM вызвать метод Control-а
AlexHomeесли есть другие решения именно в разрезе mvvm я готов выслушать
Напишите Роме Голубину или Джошу Смиту.
Я не то, чтобы против MVVM, просто нет времени сознательно усложнять себе жизнь ради моды. Хороший паттерн, но очень уж громоздкий и шума вокруг него неоправданно много.
...
Рейтинг: 0 / 0
02.06.2010, 12:38
    #36663654
Алексей К
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MVVM вызвать метод Control-а
AlexHomeну блин не все так просто:
1) Полностью протеворечит концепции mvvm так как view является предстовлением модели и соответственно viewmodel ниче не знает про viewРасскажите это идейным вдохновителям концепции контролописания в WPF/SL, придумавшим обращаться к контролам по именам PART_XXX через GetTemplateChild вместо нормальной кодогенерации. В описанной ситуации вьюмоделью является сишарпная часть контрола.

Я бы не стал с фанатизмом следовать всем рекомендациям, а постарался бы сформировать свою точку зрения на проблему.
...
Рейтинг: 0 / 0
02.06.2010, 12:40
    #36663662
Алексей К
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MVVM вызвать метод Control-а
AlexHome3) Тут тоже не догнал причем здесь свойства ViewModel и методы контрола как их увязать, свойства Controla и свойства ViewModel тут понятно что надо bind-итьИзучите концепцию attached properties (attached behaviors).
...
Рейтинг: 0 / 0
02.06.2010, 12:44
    #36663687
ЛП
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MVVM вызвать метод Control-а
AlexHomeвот к чему я и пришел, просто если есть другие решения именно в разрезе mvvm я готов выслушать
Сложно лечить по фотографии, тем более при отсутствии оной.
Всё зависит от того, чего это за "метод контрола" такой.
Чего там делается и зачем.
...
Рейтинг: 0 / 0
02.06.2010, 12:46
    #36663691
AlexHome
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MVVM вызвать метод Control-а
Алексей КAlexHomeну блин не все так просто:
1) Полностью протеворечит концепции mvvm так как view является предстовлением модели и соответственно viewmodel ниче не знает про viewРасскажите это идейным вдохновителям концепции контролописания в WPF/SL, придумавшим обращаться к контролам по именам PART_XXX через GetTemplateChild вместо нормальной кодогенерации. В описанной ситуации вьюмоделью является сишарпная часть контрола.

Я бы не стал с фанатизмом следовать всем рекомендациям, а постарался бы сформировать свою точку зрения на проблему.

AlexHomeну блин не все так просто:
1) Полностью протеворечит концепции mvvm так как view является предстовлением модели и соответственно viewmodel ниче не знает про view
здесь я говорил о логическом разделении нежели о физическом разделении, как бы хочется понять что именно рекомендуют те кто создавал данный патерн или же те кто им постоянно пользуется, чтобы сделать уже свои умозаключения, просто на русских сайтах практически вообще ничего нету кроме "Введение", на иностранных тоже все так скудно описано.
...
Рейтинг: 0 / 0
02.06.2010, 12:51
    #36663708
AlexHome
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MVVM вызвать метод Control-а
ЛПAlexHomeвот к чему я и пришел, просто если есть другие решения именно в разрезе mvvm я готов выслушать
Сложно лечить по фотографии, тем более при отсутствии оной.
Всё зависит от того, чего это за "метод контрола" такой.
Чего там делается и зачем.
да в принципе не важно че за контрол или метод, просто как бы если есть место данному варианту(вызвать функцию контрола) в паттерне mvvm, то хотелось бы понять куда это воткнуть (model, viewmodel, view) или тут уже на свое усмотрение, вот что хотелось бы понять.
...
Рейтинг: 0 / 0
02.06.2010, 12:51
    #36663710
LR
LR
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MVVM вызвать метод Control-а
AlexHome,

вопрос задан не совсем понятно, "именно в разрезе mvvm" - этот вызов (метода) к чему относится - к m,v,или vm?
если это v - тогда, наверное, Interaction (Trigger->Action)
...
Рейтинг: 0 / 0
02.06.2010, 12:55
    #36663729
LR
LR
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MVVM вызвать метод Control-а
AlexHomeто хотелось бы понять куда это воткнуть (model, viewmodel, view) или тут уже на свое усмотрение, вот что хотелось бы понять.
хе-хе... звучит типа "я знаю что такое суббота, но хотелось бы понять куда там воткнуть человека")))
...
Рейтинг: 0 / 0
02.06.2010, 12:55
    #36663730
AlexHome
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MVVM вызвать метод Control-а
LRAlexHome,

вопрос задан не совсем понятно, "именно в разрезе mvvm" - этот вызов (метода) к чему относится - к m,v,или vm?
если это v - тогда, наверное, Interaction (Trigger->Action)
нет, вверху говорилось уже, метод Control-а, а не событие.
...
Рейтинг: 0 / 0
02.06.2010, 12:57
    #36663738
LR
LR
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MVVM вызвать метод Control-а
AlexHomeLRAlexHome,

вопрос задан не совсем понятно, "именно в разрезе mvvm" - этот вызов (метода) к чему относится - к m,v,или vm?
если это v - тогда, наверное, Interaction (Trigger-> Action )
нет, вверху говорилось уже, метод Control-а, а не событие.
...
Рейтинг: 0 / 0
02.06.2010, 13:01
    #36663753
Алексей К
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MVVM вызвать метод Control-а
AlexHomeздесь я говорил о логическом разделении нежели о физическом разделении, как бы хочется понять что именно рекомендуют те кто создавал данный патерн или же те кто им постоянно пользуется, чтобы сделать уже свои умозаключения, просто на русских сайтах практически вообще ничего нету кроме "Введение", на иностранных тоже все так скудно описано.Логическое разделение есть во всех нижеперичисленных концепциях: MVP, MVC, MVVM. А как раз "физически" это разделение выполнено по разному. Этим они и различаются.
...
Рейтинг: 0 / 0
02.06.2010, 13:01
    #36663754
AlexHome
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MVVM вызвать метод Control-а
LRAlexHomeLRAlexHome,

вопрос задан не совсем понятно, "именно в разрезе mvvm" - этот вызов (метода) к чему относится - к m,v,или vm?
если это v - тогда, наверное, Interaction ( Trigger ->Action)
нет, вверху говорилось уже, метод Control-а, а не событие .
че непонятно
...
Рейтинг: 0 / 0
Форумы / WPF, Silverlight [игнор отключен] [закрыт для гостей] / MVVM вызвать метод Control-а / 25 сообщений из 41, страница 1 из 2
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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