WPF在页面加载时为组合框设置SelectedValue



在初始化页面时创建了一个ComboBox

 Dim CategoryCombo As New CustomControl.ComboCBx
        With CategoryCombo
            .Name = "MaintTypes_CatCombo"
        End With
        RegisterControl(MaintenanceTypes_Grid, CategoryCombo)
        vToolBar.Items.Add(CategoryCombo)
        vToolBar.Items.Add(TS_Separator)

并添加到工具栏

在加载事件

中填充
Dim CatCombo As CustomControl.ComboCBx = MaintenanceTypes_Grid.FindName("MaintTypes_CatCombo")
 With CatCombo
            .IsNewRecord = False
            .Width = 200
            .ItemsSource = ReturnCategories.DefaultView
            .SelectedValuePath = "ID"
            .DisplayMemberPath = "Name"
            .SelectedIndex = 0
        End With

如果用户导航到另一个页面并返回所选值,则返回所选索引0。我可以在离开页面之前抓取最后选择的值,但无法找到一种方法来设置。selectedvalue当页面重新加载

数据来自

Private Function ReturnCategories() As DataTable
    Try
        CatDT = New DataTable
        With CatDT.Columns
            .Add("ID", GetType(Integer))
            .Add("Name", GetType(String))
        End With
        With CatDT.Rows
            .Add(0, "Select Category")
        End With
        Using vService As New Service1Client
            strSQL = "SELECT Category_ID as 'ID', Category_Name as 'Name' FROM Maintenance_Categories "
            strSQL += "WHERE Management_ID = " & Management_ID
            strSQL += " ORDER BY Category_Name"
            Dim DS As DataSet = vService.ReturnDataSetHAS(strSQL)
            For Each Row As DataRow In DS.Tables(0).Rows
                With CatDT.Rows
                    .Add(Row("ID"), ReturnText(Row("Name")))
                End With
            Next
        End Using
        Return CatDT
    Catch ex As Exception
        EmailError(ex)
        Return Nothing
    End Try
End Function

任何想法?

谢谢

找到了一个解决方法-从DataTable返回索引并设置组合框的。selectedindex与该

如果有人在返回页面之前删除了所选项,请先检查行是否存在

 Dim vIndex As Integer = 0
        If Not CurrentCategory = 0 Then
            Dim vRow As DataRow = CatDT.Select("ID = '" & CurrentCategory & "'").FirstOrDefault()
            If Not vRow Is Nothing Then
                vIndex = CatDT.Rows.IndexOf(vRow)
            End If
        End If
        With CatCombo
            .IsNewRecord = False
            .Width = 200
            .ItemsSource = ReturnCategories.DefaultView
            .SelectedValuePath = "ID"
            .DisplayMemberPath = "Name"
            .SelectedIndex = vIndex
        End With

最新更新