初步的想法就是一个正方形里面排列很多button,最后再将这个正方形裁剪为圆形。
实现的步骤:
<Window x:Class="WpfApp1.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:WpfApp1"
mc:Ignorable="d"
Title="MainWindow" Height="450" Width="800">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition/>
<ColumnDefinition Width="600"/>
<ColumnDefinition/>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition/>
<RowDefinition Height="600"/>
<RowDefinition/>
</Grid.RowDefinitions>
<ItemsControl Grid.Column="1" Grid.Row="1" ItemsSource="{Binding Dies}">
<ItemsControl.Clip>
<EllipseGeometry Center="300 300" RadiusX="300" RadiusY="300"/>
</ItemsControl.Clip>
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<UniformGrid Columns="30" Rows="30">
</UniformGrid>
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
<ItemsControl.ItemTemplate>
<DataTemplate>
<Button Height="20" Width="20" Margin="0" Background="LightSkyBlue"></Button>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
</Grid>
</Window>
using Prism.Mvvm;
using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace WpfApp1
{
public class Die
{
public int No { get; set; }
}
internal class MainViewModel : BindableBase
{
public MainViewModel()
{
for (int i = 0; i < 900; i++)
{
Dies.Add(new Die() { No = i });
}
}
public ObservableCollection<Die> Dies { get; set; } = new ObservableCollection<Die>();
}
}
因篇幅问题不能全部显示,请点此查看更多更全内容