Невозможно сделать selectedIndexChanged в выпадающем списке C#(и xaml)
Я пытался позволить пользователю выбрать, какую таблицу отображать из моей базы данных, и я слышал, что лучший способ сделать это - использовать событие selectedIndexChanged, чтобы при нажатии пользователем на нужную таблицу она сразу отображалась. Однако, по какой-то причине, когда я нажимаю на свой comboBox, а затем на события, я не вижу "selectedIndexChanged" в качестве опции и при написании этого вручную пишет: "Член"SelectedIndexChanged"не распознан или недоступен", это мой код xaml:
<Window x:Class="WpfApp1.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:WpfApp1"
mc:Ignorable="d"
Title="MainWindow" Height="350" Width="525">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="4*"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<Canvas Name="mycanvas" Background="LightBlue" Margin="0,0,34.4,-0.2">
<DataGrid Name="g1">
</DataGrid>
<Label Name="l1" Content="" FontWeight="ExtraBold" FontSize="15" Foreground="{x:Null}" Canvas.Left="20"/>
</Canvas>
<Canvas Grid.Column="1">
<Label Name="Instruction" Content="Choose a table" FontWeight="ExtraBold" FontSize="15" Canvas.Left="-23" Canvas.Top="62"/>
<ComboBox SelectedIndexChanged="b1" Name="ComboBox1" FontWeight="Bold" FontSize="15" Canvas.Top="98" Width="135" Height="24" Canvas.Left="-31">
<ComboBoxItem Foreground="#FF3FA4C5" Name="classesTbl">classesTbl</ComboBoxItem>
<ComboBoxItem Foreground="#FF3FA4C5" Name="gradesTbl">gradesTbl</ComboBoxItem>
<ComboBoxItem Foreground="#FF3FA4C5" Name="studentsTbl">studentsTbl</ComboBoxItem>
<ComboBoxItem Foreground="#FF3FA4C5" Name="subjectsTbl">subjectsTbl</ComboBoxItem>
<ComboBoxItem Foreground="#FF3FA4C5" Name="subjectsTeachers">subjectsTeachers</ComboBoxItem>
<ComboBoxItem Foreground="#FF3FA4C5" Name="TeachersTbl">TeachersTbl</ComboBoxItem>
</ComboBox>
</Canvas>
</Grid>
Кто-нибудь знает как это решить или что я не так сделал?
2 ответа
Элемент управления WPF ComboBox ( MSDN) не имеет SelectedIndexChanged
событие, вы можете думать о WinForms один.
Сверх того; Вы должны использовать MVVM ( MVVM: Учебное пособие от начала до конца?) и не слишком полагаться (если вообще) на управляющие события. В этом случае вы можете легко сделать это, связав SelectedItem
и в установщике свойства модели представления обновить коллекцию DataGrid
"s ItemsSource
связан с.
Одно последнее замечание; использование Canvas
там почти наверняка неверно; Вы должны просто придерживаться Grid
так что у вас есть хорошее изменение размера вместо абсолютного позиционирования.
Свойство SelectionChanged может использоваться для поля со списком, и к нему может быть привязана команда. Соответствующее действие может быть записано в Viewmodel против команды