decided to create a custom mesh template
public class AdaptableGridView : GridView { // default itemWidth private const double itemWidth = 100.00; public double ItemWidth { get { return (double)GetValue(ItemWidthProperty); } set { SetValue(ItemWidthProperty, value); } } public static readonly DependencyProperty ItemWidthProperty = DependencyProperty.Register("ItemWidth", typeof(double), typeof(AdaptableGridView), new PropertyMetadata(itemWidth)); // default max number of rows or columns private const int maxRowsOrColumns = 3; public int MaxRowsOrColumns { get { return (int)GetValue(MaxRowColProperty); } set { SetValue(MaxRowColProperty, value); } } public static readonly DependencyProperty MaxRowColProperty = DependencyProperty.Register("MaxRowsOrColumns", typeof(int), typeof(AdaptableGridView), new PropertyMetadata(maxRowsOrColumns)); public AdaptableGridView() { this.SizeChanged += MyGridViewSizeChanged; } private void MyGridViewSizeChanged(object sender, SizeChangedEventArgs e) { // Calculate the proper max rows or columns based on new size this.MaxRowsOrColumns = this.ItemWidth > 0 ? Convert.ToInt32(Math.Floor(e.NewSize.Width / this.ItemWidth)) : maxRowsOrColumns; } }
XAML:
<local:AdaptableGridView ItemWidth="250" x:Name="tumbview" VerticalAlignment="Stretch" HorizontalAlignment="Stretch" ItemsSource="{Binding imagelist}" SelectionChanged="GridView_SelectionChanged" Margin="50,0,0,0" > <GridView.ItemsPanel> <ItemsPanelTemplate> <VariableSizedWrapGrid Orientation="Horizontal" ItemWidth="{Binding ElementName=tumbview, Path=ItemWidth}" MaximumRowsOrColumns="{Binding ElementName=tumbview, Path=MaxRowsOrColumns}"/> </ItemsPanelTemplate> </GridView.ItemsPanel>
nice tutorial at: customizable meshing tutorial
source share