0

我正在尝试创建一个网格,并将其设置为ListBoxItem. 出于性能原因,我在 C#PrepareContainerForItemOverride()的类方法中这样做。ListBox

protected override void PrepareContainerForItemOverride(DependencyObject element, object item)
{
    base.PrepareContainerForItemOverride(element, object);
    Grid grid = new Grid();
    ... adding stuff to the grid ...
    ListBoxItem lbItem = element as ListBoxItem;
    lbItem.Content = grid;
}

我可以为内容设置一些字符串,但不能为网格设置。

4

3 回答 3

1

您可以将网格设置为内容,也许您只是看不到它?

因为这很好用:

 public MainWindow()
        {
            InitializeComponent();

            var grid = new Grid();
            grid.Children.Add(new TextBox { Text = "Test" });
            var lbItem = new ListBoxItem();
            lbItem.Content = grid;

            _myListBox.Items.Add(lbItem);
        }
于 2012-08-23T13:15:07.910 回答
0

我会使用项目的 ContentTemplate。你可以在 xaml 中设置,它更干净。

于 2012-08-23T13:19:31.257 回答
0
lbItem.Content = grid;
lbItem.ContentTemplate = null; // Added one line to set ContentTemplate to null

这必须完成,即使 xaml 中没有 ContentTemplate 定义。ListBox 有一些默认的内容模板搞砸了。

于 2012-08-24T08:33:29.617 回答