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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了无法在组合框c#(和xaml)中执行selectedIndexChanged相关的知识,希望对你有一定的参考价值。

我试图让用户选择从我的数据库中显示哪个表,我听到最好的方法是使用“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>

有谁知道如何解决它或我做错了什么?

答案

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

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

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

另一答案

SelectionChanged属性可用于组合框,命令可以绑定到它。可以根据命令在Viewmodel中写入相应的操作

以上是关于无法在组合框c#(和xaml)中执行selectedIndexChanged的主要内容,如果未能解决你的问题,请参考以下文章

选择组合框时设置文本框的属性 WPF XAML

组合框绑定MVVM C#

XAML:在组合框项目突出显示上显示按钮

XAML 组合框 SelectionChanged 触发 OnLoad

WPF 数据绑定:如何使用 XAML 将枚举数据绑定到组合框? [复制]

组合框不显示图像