how does itemcontainergenerator.containerfromitem work grouped list?


i have listbox until recently displaying boring list items. i means mylist.itemcontainergenerator.conainerfromitem(thing) collect listboxitem hosting "thing" list.



this week i've run-down listbox rather collectionviewsource binds the equipment organization enabled. equipment within listbox grouped underneath good headers.



however, given doing this, itemcontainergenerator.containerfromitem stopped operative - advantage zero even equipment i know listbox. heck - containerfromindex(0) returning zero even listbox populated items!



how i collect listboxitem listbox that's displaying grouped items?



edit: here's xaml code-behind trimmed-down example. raises nullreferenceexception since containerfromindex(1) returning zero even nonetheless there 4 equipment list.



xaml:



<window x:class="wpfapplication1.window1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:scm="clr-namespace:system.componentmodel;assembly=windowsbase"
title="window1">

<window.resources>
<xmldataprovider x:key="mytasks" xpath="tasks/task">
<x:xdata>
<tasks xmlns="">
<task name="groceries" type="home"/>
<task name="cleaning" type="home"/>
<task name="coding" type="work"/>
<task name="meetings" type="work"/>
</tasks>
</x:xdata>
</xmldataprovider>

<collectionviewsource x:key="mysortedtasks" source="{staticresource mytasks}">
<collectionviewsource.sortdescriptions>
<scm:sortdescription propertyname="@type" />
<scm:sortdescription propertyname="@name" />
</collectionviewsource.sortdescriptions>

<collectionviewsource.groupdescriptions>
<propertygroupdescription propertyname="@type" />
</collectionviewsource.groupdescriptions>
</collectionviewsource>
</window.resources>

<listbox
x:name="listbox1"
itemssource="{binding source={staticresource mysortedtasks}}"
displaymemberpath="@name"
>
<listbox.groupstyle>
<groupstyle>
<groupstyle.headertemplate>
<datatemplate>
<textblock text="{binding name}"/>
</datatemplate>
</groupstyle.headertemplate>
</groupstyle>
</listbox.groupstyle>
</listbox>
</window>


cs:



public window1()
{
initializecomponent();
listbox1.itemcontainergenerator.statuschanged += itemcontainergenerator_statuschanged;
}

void itemcontainergenerator_statuschanged(object sender, eventargs e)
{
(listbox1.itemcontainergenerator.status == system.windows.controls.primitives.generatorstatus.containersgenerated)
{
listbox1.itemcontainergenerator.statuschanged -= itemcontainergenerator_statuschanged;

var i = listbox1.itemcontainergenerator.containerfromindex(1) listboxitem;

// name keyboard-focus second item
i.isselected = true;
i.focus();
}
}


Comments

Popular posts from this blog

list macos calm editors formula editors

how i practical urls indicate .aspx pages asp.net deployed an iis? (preferably but iis)

jaxb - xjc - reworking generated typesafe enum category members