【发布时间】:2012-02-21 16:52:12
【问题描述】:
我用过一个方法,
public static string[] getMyStrings()
并将其传递给一个组合框,例如:
cmbMyBox.itemsSource = getMyStrings(). //(more detail below)
调试器显示字符串已添加到组合框中,但是当我查看组合框时,条目数在那里,但为空白。有谁知道我做错了什么?
我的设备列表:
public static string[] GetMIDIInDevices()
{
//get list of devices
string[] returnDevices = new string[MidiIn.NumberOfDevices];
// Get the product name for each device found
for (int device = 0; device < MidiIn.NumberOfDevices; device++)
{
returnDevices[device] = MidiIn.DeviceInfo(device).ProductName;
}
return returnDevices;
}
在我的 WPF 主窗口中显示它的简单代码:
public MainWindow()
{
InitializeComponent();
cmbMidiDropdown.ItemsSource = NAudioMIDI.GetMIDIInDevices();
//LoadMidiInDevicesIntoComboBox();
}
这是 XAML:
<TabItem Header="MIDI Settings" Name="tabMidiSettings" Background="DarkGoldenrod">
<Grid Background="Honeydew">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="10" />
<ColumnDefinition Width="758" />
</Grid.ColumnDefinitions>
<ComboBox Grid.Column="1" Height="23" HorizontalAlignment="Right" Margin="0,141,146,0" Name="cmbMidiDropdown" VerticalAlignment="Top" Width="312" ItemsSource="{Binding}" DisplayMemberPath="Name" />
<Label Content="Select Midi Input device" Grid.Column="1" Height="28" HorizontalAlignment="Left" Margin="143,141,0,0" Name="label1" VerticalAlignment="Top" />
</Grid>
</TabItem>
调试器输出:
GetMIDIInDevices()
- returnDevices {string[3]} string[]
[0] "MIDISPORT 2x2 In A" string
[1] "MIDISPORT 2x2 In B" string
[2] "Turtle Beach USB MIDI 1x1" string
returnDevices[device] "Turtle Beach USB MIDI 1x1" string
cmbMIDIDropdown
+ cmbMidiDropdown {System.Windows.Controls.ComboBox Items.Count:3}
- cmbMidiDropdown.ItemsSource {string[3]}
- [string[]] {string[3]} string[]
[0] "MIDISPORT 2x2 In A" string
[1] "MIDISPORT 2x2 In B" string
[2] "Turtle Beach USB MIDI 1x1" string
【问题讨论】:
-
请显示一些实际的字符串值,也许有一些特殊符号
-
我的猜测是您的 XAML 中的绑定不正确。您也可以发布您的 XAML 吗?
-
看起来不错,因为设备的
ProductName实际上包含任何内容,您可能需要检查一下。如前所述,您的 XAML 也可能是错误的。