Наконец-то я не понял, как это сделать, спасибо @ Keithe rnet Я понял, как это исправить, это код
XAML
<Grid>
<ItemsControl x:Name="myListView" Margin="0,0,0,0" >
<ItemsControl.ItemContainerStyle>
<Style>
<Setter Property="FrameworkElement.Margin" Value="5"/>
</Style>
</ItemsControl.ItemContainerStyle>
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<UniformGrid DataContext="{Binding RelativeSource={RelativeSource Self}}" Rows="{Binding Path=Rows, Mode=TwoWay}" Columns="{Binding Path=Columns, Mode=TwoWay}"/>
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
<ItemsControl.ItemTemplate>
<DataTemplate>
<local:GalleryButton></local:GalleryButton>
</DataTemplate>
</ItemsControl.ItemTemplate>
<ItemsControl.Template>
<ControlTemplate >
<Border x:Name="Border"
SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}"
Background="{TemplateBinding Background}"
BorderBrush="{TemplateBinding BorderBrush}"
BorderThickness="{TemplateBinding BorderThickness}">
<ScrollViewer Margin="0"
Focusable="False"
Padding="{TemplateBinding Padding}"
SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}"
HorizontalScrollBarVisibility="{TemplateBinding ScrollViewer.HorizontalScrollBarVisibility}"
VerticalScrollBarVisibility="{TemplateBinding ScrollViewer.VerticalScrollBarVisibility}"
CanContentScroll="{TemplateBinding ScrollViewer.CanContentScroll}">
<ItemsPresenter SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" />
</ScrollViewer>
</Border>
<ControlTemplate.Triggers>
<Trigger Property="IsEnabled" Value="False">
<Setter TargetName="Border" Property="Background" Value="Blue" />
<Setter TargetName="Border" Property="BorderBrush" Value="Silver" />
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</ItemsControl.Template>
</ItemsControl>
</Grid>
Code-Behind
public partial class ModelGallery : UserControl
{
public int Rows { get; set; }
public int Columns { get; set; }
public ModelGallery()
{
InitializeComponent();
DataContext = this;
myListView.Items.Clear();
}
public void setModelList(List<GalleryButton> llista)
{
Columns = 5;
Rows = llista.Count / Columns;
myListView.ItemsSource = llista;
}
}
Итак, мне понадобился ControlTemplate, чтобы все было правильно с ScrollViwer, все остальное было очень интуитивно понятным, так что мы необходимость? Шаблон для просмотра элементов и их последующего отображения. тогда нам нужно только отрендерить Scroll. Спасибо за вашу помощь.