【问题标题】:C# CheckBox 内容正确格式
【发布时间】:2022-01-22 09:52:53
【问题描述】:

我有一个 C# WPF 应用程序,我在其中动态创建 CheckBoxes, 并设置它们的属性 通过一个由对象组成的 MyList 的 foreach 循环,因为我需要包含不同类型的数据。 在索引 1 处,列表包含我想用作 CheckBox.Content 的名称。

我的循环看起来像:

int i = 1;
foreach (List<Object> o in MyList)
{
CheckBox cb = new CheckBox();
cb.Name = o[1].ToString() + i.ToString();
cb.Content = string.Format("  " + o[1].ToString());
// then I add the CheckBox to a StackPanel
checkBoxesStackPanel.Children.Add(cb);
i++;
}

我面临的问题是 CheckBox.Content 没有正确格式化列表中的名称。 我无法控制列表的字符,因为它们是由特定用户组创建的 不同的要求。

示例: 如果我在列表中有一个元素,例如“1234_ABC_123456_AB_12” 它在 WPF 中显示为类似于“1234ABC_123456_AB_12”的内容。

如何正确格式化 cb.Content 以便 CheckBoxes.Content 将在我的 WPF 应用程序中正确显示?

我看了:

https://docs.microsoft.com/en-us/dotnet/desktop/wpf/controls/checkbox-styles-and-templates?view=netframeworkdesktop-4.8

但找不到解决此问题的示例。

最初,我在 WindowsForms 中有这个解决方案,并且 CheckBoxes 文本显示正确。 现在我正在将解决方案迁移到 WPF,我需要解决最后一个小(但很烦人)的问题。

感谢您的帮助!

【问题讨论】:

标签: c# wpf checkbox formatting


【解决方案1】:

你可以试试下面的方法是否适合你。

MainWindow.xaml:

<StackPanel x:Name="sp">
        
</StackPanel>

MainWindow.xaml.cs:

public partial class MainWindow : Window
  {
    List<string> MyList;
    public MainWindow()
    {
      InitializeComponent();
      MyList = new List<string>();
      for (int i = 1; i < 10; i++)
      {
        MyList.Add( $"1234_ABC_123456_AB_1{ i }");
      }
      int n = 1;
      foreach (var item in MyList)
      {
        if (n < MyList.Count)
        {
          CheckBox cb = new CheckBox();
          cb.Name = "cb" + n;
          cb.Content = MyList[n].ToString();
          sp.Children.Add(cb);
        }
        n++;
      }
    }
  }

The result picture:

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-14
    • 2021-06-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多