0

グリッドを作成し、それをのコンテンツとして設定しようとしていますListBoxItem。パフォーマンス上の理由から、クラスのPrepareContainerForItemOverride()メソッドのC#でこれを行っています。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 に答える