Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > WPF, UWP, WinRT, XAML
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 10.04.2012, 22:31   #1
Нике
Пользователь
 
Регистрация: 24.09.2010
Сообщений: 16
По умолчанию WPF LisBox Selectionchanged to MVVM

Никак не могу понять как должным образом преобразовать код.
У меня есть листбокс, привязанная коллекция и текстбокс, где отображается атрибут выбранного элемента листбокса.
вот как это выглядело вначале:

Код:
Код:
listBox1.DataContext = globalUserList;
где globalUserList типа IList<UserType>
Код:
Код:
   private void listBox1_SelectionChanged(object sender, SelectionChangedEventArgs e)
        {
            textBox1.Text = ((UserType) listBox1.SelectedItem).Description;
        }
Код:
Код:
<ListBox Margin="-1,98,0,0" Name="listBox1" ItemsSource="{Binding}" ItemTemplate="{DynamicResource UserTemplate}" HorizontalAlignment="Left" Width="173" SelectionChanged="listBox1_SelectionChanged" >        	
            <ListBox.ContextMenu>
                <ContextMenu Name="listmenu">
                    <MenuItem Header="Удалить" Click="DeleteUserType"></MenuItem>
                </ContextMenu>
            </ListBox.ContextMenu>
        </ListBox>

 <TextBox Height="23" HorizontalAlignment="Right" Margin="0,98,28,0" Name="textBox1" VerticalAlignment="Top" Width="120"  />
При таком раскладе все работает и отображается.
Но как только я переделываю в MVVM, список отображается, но в текстбоксе атрибут нет.
вот код:
Код:
Код:
 private DelegateCommand listItemSelected;

        public ICommand ListItemSelectedCommand
        {
            get
            {
                if (listItemSelected == null)
                {
                    listItemSelected = new DelegateCommand(ListItemSelected);
                      
                }
                return listItemSelected;
            }
        }

        private void ListItemSelected()
        {
            this.UserControlType.textBox1.Text = ((UserType) this.UserControlType.listBox1.SelectedItem).Description;
        }
Код:
Код:
<ListBox Margin="-1,98,0,0" Name="listBox1" 
                 ItemsSource="{Binding}" 
                 ItemTemplate="{DynamicResource UserTemplate}" 
                     SelectedItem="{Binding ListItemSelectedCommand}"                 
                 HorizontalAlignment="Left" Width="173" 
                 >           
            <ListBox.ContextMenu>
                <ContextMenu Name="listmenu">
                    <MenuItem Header="Удалить" Command="{Binding DeleteUserTypeCommand}"></MenuItem>
                </ContextMenu>
            </ListBox.ContextMenu>
        </ListBox>
Нике вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
[C# + WPF] Отлов нажатий клавиш, хуки, горячие клавиши в проекте WPF Casper-SC WPF, UWP, WinRT, XAML 3 03.03.2017 15:00
listbox.SelectionChanged in mvvm Нике C# (си шарп) 6 11.04.2012 18:24
Сравнить значение из lisbox -=Virus=- Общие вопросы Delphi 2 28.09.2010 21:17
класс Screen в WPF. Есть ли такой? [?] Не добавлять же сборку Forms в WPF Casper-SC Общие вопросы .NET 2 30.07.2010 15:10
Lisbox to Word Val Rubis Microsoft Office Word 1 13.01.2010 01:10