无法在组合框 c#(和 xaml)中执行 selectedIndexChanged

Cannot do selectedIndexChanged in combobox c#(and xaml)

我试图让用户从我的数据库中选择要显示的 table,我听说最好的方法是使用 "selectedIndexChanged" 事件,这样当用户点击desired table 它会立即显示它。但是,出于某种原因,当我单击我的组合框然后单击事件时,我没有看到 "selectedIndexChanged" 作为一个选项,并且在手动编写时说:"The member "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>

有谁知道怎么解决或者我做错了什么?

WPF ComboBox 控件 (MSDN) 没有 SelectedIndexChanged 事件,您可能会想到 WinForms 事件。

除此之外;您应该使用 MVVM (MVVM: Tutorial from start to finish?) 并且不要太依赖(如果有的话)控制事件。在这种情况下,您可以通过绑定 SelectedItem 轻松完成此操作,并在视图模型 属性 的 setter 更新集合中绑定 DataGridItemsSource到.

最后一个音符; Canvas 的使用几乎肯定是不正确的;你应该坚持使用 Grid 这样你就可以很好地调整大小而不是绝对定位。

SelectionChanged 属性 可用于组合框,并可将命令绑定到它。对应的action可以写在Viewmodel中针对command