我正在尝试在WPF中创建一个用户控件来表示Go board,它本质上只是一些交叉点上带有点的黑线网格。
目前,我使用Grid控件来处理石块的放置,但其中一个困难是,石块被放置在网格线的交点上,而不是放在它们之间,所以如果我想绘制线条,它们需要穿过网格单元的中心。
我仍然是WPF的新手,所以我不太确定我应该如何处理这个问题;我是否应该在每次呈现控件时手动绘制线条(如果是,如何呈现?),或者有更好的方法吗?
发布于 2010-03-05 15:00:04
发布于 2010-02-23 20:59:56
前段时间我创建了一个棋盘,我创建了一个ItemsControl,它的每个元素都是带有小矩形模板的ItemsControl。以下是我的代码
<UserControl x:Class="Checker.Controls.Board"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:models="clr-namespace:Checker.Models"
xmlns:usercontrols="clr-namespace:Checker.Controls"
xmlns:converters="clr-namespace:Checker.Converters">
<UserControl.Resources>
<models:BoardModel x:Key="boardModel"/>
<converters:BoolToBorderColorConverter x:Key="boolToBorderColorConverter"/>
<DataTemplate DataType="{x:Type models:Figure}">
<usercontrols:FigureControl/>
</DataTemplate>
</UserControl.Resources>
<Border>
<ItemsControl ItemsSource="{Binding Source={StaticResource boardModel}, Path=BoardItems}">
<ItemsControl.ItemTemplate>
<DataTemplate>
<ItemsControl ItemsSource="{Binding}" MouseDown="ItemsControl_MouseDown">
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<VirtualizingStackPanel Orientation="Horizontal"/>
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
<ItemsControl.ItemTemplate>
<DataTemplate>
<Border Background="{Binding Path='IsFirstColor', Converter={StaticResource boolToBorderColorConverter}}" BorderBrush="Black" BorderThickness="1" Width="50" Height="50" MouseDown="ItemsControl_MouseDown">
<ContentPresenter Content="{Binding FigureOnBoard}">
</ContentPresenter>
</Border>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
</Border>
</UserControl>希望这能有所帮助
发布于 2010-02-23 20:57:53
可能有帮助的随机想法:
不是很详细,但这就是我解决这个问题的方法
https://stackoverflow.com/questions/2318113
复制相似问题