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
Post a Comment