DataTable для Combobox - SelectedValue не устанавливается в пользовательском интерфейсе, возвращаются два значения - PullRequest
0 голосов
/ 21 мая 2019

Я знаю, что это почти постоянная проблема, возникающая с SelectedItem в отношении элементов ComboBox с привязкой к данным, но я также сейчас борюсь с этой проблемой.

XAML:

<ComboBox x:Name="Price_List" BorderBrush="Gainsboro" Margin="5"  Grid.Column="1" Grid.Row="0" Grid.ColumnSpan="2" Background="{x:Null}"/>

Code-Behind:

Using Sql As New SqlClient.SqlConnection(ConnStr)
    Sql.Open()

    Using sqlcmd As New SqlClient.SqlCommand(SQLQuery, Sql)

        Dim DA As New SqlDataAdapter
        Dim DS As New DataSet
        Dim DT As New DataTable

        With DT.Columns
            .Add("price_list")
            .Add("description")
        End With

        With Price_List
            .ItemsSource = DT.DefaultView
            .DisplayMemberPath = "description"
            .SelectedValuePath = "price_list"
        End With

        DA.SelectCommand = sqlcmd
        DA.Fill(DT)
    End Using
End Using

SelectedValue является своего рода работой, о чем свидетельствует Debug.Print значения в SelectionChanged, но он возвращает два значения (одно NULL) для каждого изменения - почему это будет?

Очевидно, что в этом отношении SelectedValue всегда будет отличаться от DisplayMember, так как я могу заставить WPF отображать его?

1 Ответ

1 голос
/ 21 мая 2019

Если вы переместите его обратно, вставьте несколько точек останова в Main_Tabs_SelectionChanged и убедитесь, что код выполняется только один раз.

см. https://social.msdn.microsoft.com/Forums/en-US/22e16180-914b-4b07-939e-b17ce692cf11/tab-control-selectionchanged-event-fires-a-combos-selectionchanged-event-fires?forum=wpf

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