【问题标题】:Issue when Declaring a ComboBox Object using C# code使用 C# 代码声明 ComboBox 对象时的问题
【发布时间】:2025-11-23 09:00:01
【问题描述】:

我正在使用 silverlight 为窗口电话制作程序。

我有一个小问题,是关于创建一个组合框。

我可以使用 xaml 创建它,但我现在应该使用 c# 代码声明它。

问题是在创建组合框的新实例并向其中添加项目后,组合框没有出现!

代码:

        TextBlock tb = new TextBlock();
        tb.Text = "Select your arrival status";

        tb.Margin = new Thickness(5.0);
        tb.FontSize = 20;
        tb.Foreground = new SolidColorBrush(Colors.White);

        ComboBox cb = new ComboBox();
        ObservableCollection<string> testList = new ObservableCollection<string>();
        testList.Add("Hi");
        testList.Add("Hi1");
        testList.Add("Hi2");
        cb.DataContext = testList;
        cb.Height = 50;
        cb.Width = 200;
        cb.Foreground = new SolidColorBrush(Colors.White);

        panel.Children.Add(tb);
        panel.Children.Add(cb);

从代码中可以看出,我声明了一个 TextBlock 和一个 Combobox 对象。 TextBox 对象出现,而 Combobox 不出现。

任何帮助将不胜感激。

【问题讨论】:

  • panel是什么元素? Panel 是一个抽象类,所以你的面板是 Canvas、Grid、StackPanel?在向它们添加孩子时,它们的行为都不同。
  • 你给组合框起名字了吗?不确定它会做任何事情,但值得一试。
  • 我给它起了个名字,但这并没有解决问题。
  • 可能是因为您将前景(文本)设置为白色,所以您看不到您的组合框?
  • 我不这么认为。我删除了 TextBlock,我遇到了完全相同的问题

标签: c# silverlight combobox windows-phone-8


【解决方案1】:

你需要给它分配一个位置。您的组合框很可能位于您的文本框下方。要么使用设计器和 xaml 创建它们两个,要么确保为它们分配 x,y 坐标。使用 Margin 属性以及 Horizo​​ntalAlignment 和 VerticalAlignment。

【讨论】:

  • 我不认为这是问题所在。我完全删除了文本块,但组合框仍然没有出现。
  • @user2073081 您有什么理由试图在设计器中即时布置而不是在设计器中构建 xaml?
  • 我想在 PopUp 实例中添加 ComboBox 和其他 UI 元素。
  • 然后将它们放入UserControl 并在Popup 中显示。这将允许使用 XAML 来设计UserControl