C# 在ListBox中使用自定义ListBoxItem定义进行性能分析

C# 在ListBox中使用自定义ListBoxItem定义进行性能分析,c#,wpf,xaml,listbox,C#,Wpf,Xaml,Listbox,我试图分析代码的性能,并更好地理解WPF对画布的重画行为,我将画布用作列表框中的ItemsPanel。为此,我定义了一个自定义类MyListBoxItem,它派生自ListBoxItem,请参见下面的代码 不幸的是,我不知道如何在列表框中使用这个类。我尝试将MyListBoxItem实例列表绑定到ListBox.XAML中的项,如Items={binding Path=ListBoxItemsList},但随后出现错误 “Items”属性为只读,无法从标记中设置 有没有办法做到这一点?或者,也许

我试图分析代码的性能,并更好地理解WPF对画布的重画行为,我将画布用作列表框中的ItemsPanel。为此,我定义了一个自定义类MyListBoxItem,它派生自ListBoxItem,请参见下面的代码

不幸的是,我不知道如何在列表框中使用这个类。我尝试将MyListBoxItem实例列表绑定到ListBox.XAML中的项,如Items={binding Path=ListBoxItemsList},但随后出现错误

“Items”属性为只读,无法从标记中设置

有没有办法做到这一点?或者,也许还有其他方法来实现我正在做的事情?i、 e.重新绘制行为的分析

MyListBoxItem的定义:

您可以创建一个派生的ListBox,该ListBox将覆盖GetContainerForItemOverride和IsItemTownContainerOverride方法,以返回自定义ListBoxItem:

您可以创建一个派生的ListBox,该ListBox将覆盖GetContainerForItemOverride和IsItemTownContainerOverride方法,以返回自定义ListBoxItem:


替换xaml中的deafult模板:

        <ListBox>
            <ListBox.ItemTemplate>
                <local:MyListBoxItem />
            </ListBox.ItemTemplate>
        </ListBox>

并从渲染中删除日志。我认为它会产生太多的垃圾邮件。

替换xaml中的deafult模板:

        <ListBox>
            <ListBox.ItemTemplate>
                <local:MyListBoxItem />
            </ListBox.ItemTemplate>
        </ListBox>

并从渲染中删除日志。我认为这会产生太多的垃圾邮件。

这会将MyListBoxItem放入每个ListBoxItem的内容中。项目容器仍然是ListBoxItem。这对您的目标很重要?当然,问题是如何用自定义容器替换默认项目容器,即ListBoxItem。这将在每个ListBoxItem的内容中放入MyListBoxItem。项目容器仍然是ListBoxItem。这对您的目标很重要?当然,问题是如何用自定义容器替换默认项目容器,即ListBoxItem。这非常有效。谢谢为了获得更多信息,我后来发现了这个链接:这非常有效。谢谢有关更多信息,我后来找到了以下链接:
        <ListBox>
            <ListBox.ItemTemplate>
                <local:MyListBoxItem />
            </ListBox.ItemTemplate>
        </ListBox>