将Grid设置为ListBoxItem.content

时间:2012-08-23 12:46:10

标签: wpf listbox listboxitem

我正在尝试创建一个网格,并将其设置为ListBoxItem的内容。出于性能原因,我在PrepareContainerForItemOverride()类的ListBox方法中使用C#进行此操作。

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;
}

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

3 个答案:

答案 0 :(得分: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);
        }

答案 1 :(得分:0)

我会使用Item的ContentTemplate。 你可以在xaml中设置,它更清洁。

答案 2 :(得分:0)

lbItem.Content = grid;
lbItem.ContentTemplate = null; // Added one line to set ContentTemplate to null

即使xaml中没有ContentTemplate定义,也必须这样做。 ListBox有一些混乱的默认内容模板。