Sto scrivendo un'app di Windows 8 Metro. Sto cercando di disegnare un GridView con tre gruppi. Voglio che uno di questi gruppi disponga diversamente i propri elementi rispetto agli altri. Ho usato i selettori in precedenza in WPF, quindi ho pensato che sarebbe stato un buon percorso. Così ho provato il GroupStyleSelector e ho trovato questo example on MSDN:Come posso creare gruppi in un GridView Metro utilizzando layout diversi?
public class ListGroupStyleSelector : GroupStyleSelector
{
protected override GroupStyle SelectGroupStyleCore(object group, uint level)
{
return (GroupStyle)App.Current.Resources["listViewGroupStyle"];
}
}
Così ho modificato/esteso su di esso da qualcosa che lo soddisferebbe:
CS:
public class ExampleListGroupStyleSelector : GroupStyleSelector
{
public ExampleListGroupStyleSelector()
{
OneBigItemGroupStyle = null;
NormalGroupStyle = null;
}
public GroupStyle OneBigItemGroupStyle { get; set; }
public GroupStyle NormalGroupStyle { get; set; }
protected override GroupStyle SelectGroupStyleCore(object group, uint level)
{
// a method that tries to grab an enum off the bound data object
var exampleListType= GetExampleListType(group);
if (exampleListType== ExampleListType.A)
{
return OneBigItemGroupStyle;
}
if (exampleListType== ExampleListType.B|| exampleListType== ExampleListType.B)
{
return NormalGroupStyle;
}
throw new ArgumentException("Unexpected group type");
}
}
XAML:
<Page.Resources>
<ExampleListGroupStyleSelector
x:Key="ExampleListGroupStyleSelector"
OneBigItemGroupStyle="{StaticResource OneBigGroupStyle}"
NormalGroupStyle="{StaticResource NormalGroupStyle}" />
</Page.Resources>
<GridView
ItemsSource="{Binding Source={StaticResource exampleListsViewSource}}"
GroupStyleSelector="{StaticResource ExampleListGroupStyleSelector}">
<GridView.ItemsPanel>
<ItemsPanelTemplate>
<VirtualizingStackPanel
Orientation="Horizontal" />
</ItemsPanelTemplate>
</GridView.ItemsPanel>
</GridView>
Ma il gruppo che mi è stato assegnato nel selettore è null o un DependencyObject tha Non riesco a ottenere alcun dato. Come posso prendere una decisione intelligente su come cambiare il GroupStyle se non mi viene data alcuna informazione. C'è un modo per passare una proprietà attraverso una proprietà associata o qualcosa del genere?