我正在使用 NetMQ 远程处理设备。它是一个基于服务器/客户端的架构。我用 WPF 和 Xaml 实现了一个 GUI,它让我可以将命令作为字符串发送,也可以将答案作为字符串接收。主机应用程序有一个Dictionary<int, cmdStruct> ListOfCommands()
. int 是一个 ID,cmdStruct 是一个定义命令结构的类,即string cmdText
:string cmdHelpText
和delegate cmdAction
.
public static Dictionary<int, CommandStructure> CollectionOfCommands = new Dictionary<int, CommandStructure>();
public class CommandStructure
{
public string mCommandName;
public string mCommandHelpText;
public Func<string> mFunc;
当我发送命令“列表”时,它应该显示字典中的所有命令,我使用它的键和值访问它以仅显示 ID、cmdText 和 cmdHelpText。然后我将它们放入stringBuilder
using append 中。
if (_clientCommand == "?" || _clientCommand == "list")
{
foreach (var cmd in CollectionOfCommands)
{
stringBuilder.Append(cmd.Key + Tab);
stringBuilder.Append(cmd.Value.mCommandName + Tab);
stringBuilder.Append(cmd.Value.mCommandHelpText + NewLine);
_serverResponse = stringBuilder.ToString();
}
}
除非我尝试将 ListBox 更改为 ComboBox (a DropDownList) 以在其上显示所有可用命令,否则这里一切正常。但问题是它不起作用。我得到了垂直列出的命令,而不是水平列出的命令。
private void ListCommands(object sender, RoutedEventArgs e)
{
Client.SendFrame(list);
Thread.Sleep(100);
var response = Client.ReceiveFrameString();
//ListHelp is a listbox
ListHelp.Items.Add(response);
//IF I PUT IT IN A COMBOBOX IT SHOWN AS DESCRIBED
ComboBox.ItemsSource = response;
}