Невозможно сделать 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 против команды

Другие вопросы по тегам