Невозможно сделать selectedIndexChanged в выпадающем списке c # (и xaml) - PullRequest
0 голосов
/ 12 июня 2018

Я пытался позволить пользователю выбрать, какую таблицу отображать из моей базы данных, и я слышал, что лучший способ сделать это - использовать событие 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 ]

0 голосов
/ 13 июня 2018

Свойство SelectionChanged может использоваться для поля со списком, и к нему может быть привязана команда.Соответствующее действие можно записать в Viewmodel против команды

0 голосов
/ 12 июня 2018

Элемент управления WPF ComboBox ( MSDN ) не имеет события SelectedIndexChanged, возможно, вы думаете о WinForms.

Помимо этого;Вы должны использовать MVVM ( MVVM: Tutorial от начала до конца? ) и не полагаться (если вообще) на управляющие события.В этом случае вы могли бы легко сделать это, связав SelectedItem, и в установщике обновления свойства модели представления свяжется с коллекцией, к которой привязан DataGrid ItemsSource.

Одно последнее замечание;использование Canvas там почти наверняка неверно;Вы должны просто придерживаться Grid, чтобы у вас было хорошее изменение размера вместо абсолютного позиционирования.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...