从Powershell以编程方式将 WPF组合框ItemSource设置为DataRowCollection时,只有一个条目,我收到此错误消息:



大致翻译为:



如果我的查询结果是带有两个或多个条目的DataRowCollection,则ItemSource的二传手ComboBox可以正常工作。该函数是用Powershell编写的,我已经尝试将DataRowCollection强制转换为数组,以解决此异常。

如果ItemSource只有一个条目,我应该向DataRowCollection设置者传递什么?

在此先感谢您的帮助。

编辑
这是一些要求的代码:

$connection = new-object system.data.SqlClient.SQLConnection($connectionString)
$command = new-object system.data.sqlclient.sqlcommand($sqlCommand,$connection)
$connection.Open()

$adapter = New-Object System.Data.sqlclient.sqlDataAdapter $command
$dataset = New-Object System.Data.DataSet
$adapter.Fill($dataSet) | Out-Null

$connection.Close()

$rows = $dataSet.Tables[0].Rows #i am querying only one table
#$combobox is the combobox element of the wpf window
$combobox.ItemSource = $rows #If $rows has just one element, this is the point where the exception occurs

最佳答案

我发现了一些解决方法。
现在,我将单个DataRow项目转换为数组并添加一个空字符串。如果不添加空字符串,则会发生相同的异常。

$rows = $dataSet.Tables[0].Rows
#simple hack, to ensure this method always returns an array.
#if just one element is in Rows, wpf complains about a single datarow not being an enumerable
if($rows.Count -eq 1)
{
    $rows = @($rows,"")
}

现在,二传手ItemSource接受$rows,但是当然,空字符串将显示在ComboBox中。

关于c# - 设置为单个项目集合时,Combobox Itemssource引发异常,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33504196/

10-12 02:55