С Новым годом! Форум программистов, компьютерный форум, киберфорум
C#: WPF, UWP и Silverlight
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.54/13: Рейтинг темы: голосов - 13, средняя оценка - 4.54
25 / 24 / 18
Регистрация: 16.10.2009
Сообщений: 1,161
1

mvvm : как в модель представления передать имя колонки DataGrid?

20.01.2013, 17:30. Показов 2335. Ответов 10
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Уважаемые Гуру!
Есть userControl на котором DataGrid. В модели представления делаю фильтр данных.
Команда фильтрации вызывается из контекстного меню DataGrid. Фильтрация должна производиться по
колонке, над которой было вызвано контекстное меню.
1. Как модель представления может узнать по какой колонке фильтровать?
2. Есть DependencyProperty код_района , который определяется в codeBehind файле контрола. Как модель представления может узнать значение этого DependencyProperty код_района?
Может кто поделится ссылками что почитать по этому вопросу?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
20.01.2013, 17:30
Ответы с готовыми решениями:

Как правильно передать заполненную модель бизнес логике модели представления
Всем привет! Есть задача передать заполненную бизнес модель на модель представления... public...

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

Как в DataGrid занести изменение в базу на MVVM
Возможно ли поставить какую нить функцию в DataGridTextColumn чтобы при изменении изменения...

Как установить DataGrid.ItemsSource из кода ViewModel in mvvm?
Уважаемые Guru! Во viewModel, wich is DataContext to UserControl, код следующий: public class...

10
Темная сторона .Net
592 / 489 / 39
Регистрация: 21.07.2012
Сообщений: 1,668
20.01.2013, 17:40 2
АТерентьев, а какие библиотеки используются?
0
25 / 24 / 18
Регистрация: 16.10.2009
Сообщений: 1,161
20.01.2013, 18:53  [ТС] 3
Да можно сказать - чистая VS 2010.
PresentationFramework
WPFToolkit.Extended

Добавлено через 6 минут
DependencyProperty Район привязан к DependencyProperty другого элемента на главной форме:
HTML5
1
2
3
<DataTemplate DataType="{x:Type local:организацииVM}">
                <local:организации РайонОрганизации ="{Binding ElementName=ДеревоРК, Path=АктРайон, Mode=TwoWay}" />
</DataTemplate>
Во ViewModel сделал свойство код_района который пытаюсь привязать к РайонуОрганизации, но пока не получается.
0
25 / 24 / 18
Регистрация: 16.10.2009
Сообщений: 1,161
20.01.2013, 19:03  [ТС] 4
Справа на форме - дерево для выбора района. Здесь - DependencyProperty актиного района, который привязал к DependencyProperty районОрганизации в UserControl организации, который в свою очередь появляется на одной из закладок TabControl основной формы. У UserControl Организации контекстом является ViewModel организацииVM.cs.
В последней нужно формировать фильтр по району ну и значениям других колонок грида. Отсюда 2 задачи -
1. Связать значение района из UserControl организации со свойством организацииVM.cs
2. Связать SelectedCell со свойством из той же организацииVM.cs.
Миниатюры
mvvm : как в модель представления передать имя колонки DataGrid?  
0
25 / 24 / 18
Регистрация: 16.10.2009
Сообщений: 1,161
20.01.2013, 19:19  [ТС] 5
Справа на форме - дерево для выбора района. Здесь - DependencyProperty актиного района, который привязал к DependencyProperty районОрганизации в UserControl организации, который в свою очередь появляется на одной из закладок TabControl основной формы. У UserControl Организации контекстом является ViewModel организацииVM.cs.
В последней нужно формировать фильтр по району ну и значениям других колонок грида. Отсюда 2 задачи -
1. Связать значение района из UserControl организации со свойством организацииVM.cs
2. Связать SelectedCell со свойством из той же организацииVM.cs.
0
Темная сторона .Net
592 / 489 / 39
Регистрация: 21.07.2012
Сообщений: 1,668
20.01.2013, 20:05 6
АТерентьев, я имел ввиду какие библиотеки паттерна mvvm. Моя тема
А RelayCommand прикрутить к событию пробовали?
или ICommand реализованный.
0
25 / 24 / 18
Регистрация: 16.10.2009
Сообщений: 1,161
20.01.2013, 20:11  [ТС] 7
Команды прикручены и работают. Пока разбираюсь может поделитесь какие библиотеки полезны.
Я пока стандартными средствами обходился без библиотек. А интересно.
Ну, в принципе я понимаю, что ViewModel ничего не знает о View.
Весь обмен только за счет привязок.
0
Темная сторона .Net
592 / 489 / 39
Регистрация: 21.07.2012
Сообщений: 1,668
20.01.2013, 20:22 8
АТерентьев, Точнее View ничего не знает о ViewModel,он конечная цель всех этих манипуляций.
Я использовал для своего маленького проекта galaSoftMVVM

Знакомые,которые работают пользуются PRISM

Те кто занимается wpf долго накопили свои библиотеки по MVVM,которые возможно более гибкие и обширные,но
увы на халяву код не дают.

А я то думал,mvvm держатся только на этих библиотеках в основном,а вы в режиме берсерка пишите)

Добавлено через 2 минуты
Цитата Сообщение от АТерентьев Посмотреть сообщение
2. Связать SelectedCell со свойством из той же организацииVM.cs.
XML
1
SelectedItem="{Binding SelectedItem, Mode=TwoWay}"
DataContext должен быть выставлен в DataGrid,режим выбора,ячейка,строка и т.д.

И свойство в ViewModel "SelectedItem",которое и привяжем.С этим думаю понятно.

Добавлено через 1 минуту
Цитата Сообщение от АТерентьев Посмотреть сообщение
1. Связать значение района из UserControl организации
где именно это значение,и какое оно,тип?
0
25 / 24 / 18
Регистрация: 16.10.2009
Сообщений: 1,161
20.01.2013, 20:39  [ТС] 9
1. По SelectedItem:
Фильтрация запускается по команде
C#
1
НовыйФильтр = new ActionCommand(добавитьФильтр) { IsExecutable = true };
В процедуре добавитьФильтр нужно знать значение ячейки грида. Думаю SelectedCell тут поможет. Единственное
что пока не проверил правильно ли будет формироваться SelectedCell - на фильтрацию попадаю из контекстного меню и оператор не будет специально выделять ячейку, просто над ней кликнет правой кнопкой.
2. В codeBehind контрола организации (организации.xaml.cs) ввел
C#
1
2
3
4
5
6
7
8
9
        public static DependencyProperty РайонОрганизацииProperty =
            DependencyProperty.Register("РайонОрганизации", typeof(район), typeof(организации),
            new PropertyMetadata(null, OnРайонОрганизацииChanged));
        public район РайонОрганизации
        {
            get { return (район)GetValue(РайонОрганизацииProperty); }
            set { SetValue(РайонОрганизацииProperty, value); }
        }
        private static void OnРайонОрганизацииChanged(DependencyObject sender, DependencyPropertyChangedEventArgs e)
где район - entity со всякими свойствами - наименование района и прочее.
Попытался это же свойство связать со свойством во ViewModel (организацииVM.cs):
C#
1
2
3
4
5
6
7
8
9
10
        private район _районVM;
        public район районVM
        {
            get { return _районVM; }
            set
            {
                _районVM = value;
                OnPropertyChanged("районVM");
            }
        }
Но после этого перестал попадать на процедуру OnРайонОрганизацииChanged при смене района в дереве районов.
Вроде для РайонОрганизацииProperty источником является свойство из дерева районов, а само оно является источником для свойства вьюхи, но видимо нельзя так. Убрал этот binding и стал попадать в OnРайонОрганизацииChanged. Пока так, разбираюсь... Как то упростить нужно бы , конечно
0
Темная сторона .Net
592 / 489 / 39
Регистрация: 21.07.2012
Сообщений: 1,668
20.01.2013, 20:59 10
Цитата Сообщение от АТерентьев Посмотреть сообщение
просто над ней кликнет правой кнопкой.
В get можно написать,если нету выделенной ячейки - выделить 1-ую или 2-ую.

Цитата Сообщение от АТерентьев Посмотреть сообщение
Как то упростить нужно бы , конечно
А вот тут так просто не упростишь,это груз mvvm wpf. Хотя может есть решение,я не видел.

Цитата Сообщение от АТерентьев Посмотреть сообщение
В codeBehind контрола организации (организации.xaml.cs) ввел
а тут,по-моему,либо 1 либо 2. Лучше первое,но 2 - проще.
2 код - вся магия,нужная для привязки. Может в хамл описались.

Цитата Сообщение от АТерентьев Посмотреть сообщение
Но после этого перестал попадать
а трассировка что говорит?
0
25 / 24 / 18
Регистрация: 16.10.2009
Сообщений: 1,161
20.01.2013, 21:32  [ТС] 11
Ушел от компа, теперь завтра. А что полезного есть в библиотеках, если не сложно в двух словах?
0
20.01.2013, 21:32
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
20.01.2013, 21:32
Помогаю со студенческими работами здесь

Как из списка List<double> добавить элементы в DataGrid? MVVM
Есть список который содержит вещественные числа. Нужно эти числа добавить с DataGrid.

Как запоминать выделенную запись в DataGrid при использовании MVVM?
Здравствуйте. Такой вот вопрос. Работаю с WPF и MVVM не так давно. Как мне после обновления...

Как при использовании свойства DataGrid.RowDetailsTemplate вызвать команду? MVVM
Есть таблица с определенными данными допустим пусть в каждой строке будут два значения a и b надо...

Как передать в процедуру/функцию имя класса, который еще не создан (универсальное имя)
Всем привет, помогите. ;) Пишу MVVM-приложение, будем много WPF форм. Для каждой формы нужно...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru