我正在尝试创建一个网格,并将其设置为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;
}
我可以为内容设置一些字符串,但不能为网格设置。
答案 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有一些混乱的默认内容模板。