WPF - 需要访问代码

时间:2018-06-09 02:32:24

标签: c# wpf itemscontrol

我正在做一个简单的游戏,一个砖/块破坏者游戏。我在屏幕上绘制了正确需要它们的块。然而,我想找到一种方法来使用用户定义的委托和自定义事件来使用Rectangle.IntersectsWith()方法检测一个Rectangle(球)与另一个Rectangle(一个块)之间的冲突。我希望受影响的块报告事件,所以我可以让它消失。

为了生成我的块,我使用一组WPF XAML代码,在Canvas(游戏板)中创建一个包含Rectangle的ItemsControl元素。在我的代码后面,我将ItemsControl ItemsSource绑定到泛型类型Block类的列表。这个Block类非常简单,它只是一个布尔值。如果块为true,则绑定块将使ItemsControl触发器启用Rectangle。

球是Canvas中定义的WPF中的Rectangle元素。所以,我可以在这里提供任何必要的代码,但是首先,我发布了我觉得相关的内容,以便开始思考......

实现此目的的任何提示,建议或想法?

C#:MainWindow.xaml.cs

private void BindBlocks()
{
    Blocks = new List<Block>();
    for (var c = 0; c < 8; c++)
    {
        for (var r = 0; r < 4; r++)
        {
            Blocks.Add(new Block(true));
        }
    }
    ItemsControl_BlockBinding.ItemsSource = Blocks;
}

WPF:MainWindow.xaml

<!--BLOCKS-->
<ItemsControl x:Name="ItemsControl_BlockBinding" Canvas.Top="16" Canvas.Left="17">
    <ItemsControl.ItemsPanel>
        <ItemsPanelTemplate>
            <UniformGrid x:Name="Grid_BlockField" Height="370" Width="730" Columns="8" ClipToBounds="True">
                <UniformGrid.Effect>
                    <DropShadowEffect Direction="270" Opacity="0.8" ShadowDepth="1" BlurRadius="8"/>
                </UniformGrid.Effect>
            </UniformGrid>
        </ItemsPanelTemplate>
    </ItemsControl.ItemsPanel>
    <ItemsControl.ItemTemplate>
        <DataTemplate>
            <Rectangle x:Name="Rectangle_Block" IsEnabled="{Binding (local:Block.BlockState)}" Fill="AliceBlue" Height="auto" Width="auto" Margin="3,3,3,3"/>
            <DataTemplate.Triggers>
                <Trigger Property="IsEnabled" Value="True">
                    <Setter Property="Visibility" Value="Visible" TargetName="Rectangle_Block"/>
                </Trigger>
                <Trigger Property="IsEnabled" Value="False">
                    <Setter Property="Visibility" Value="Hidden" TargetName="Rectangle_Block"/>
                </Trigger>
            </DataTemplate.Triggers>
        </DataTemplate>
    </ItemsControl.ItemTemplate>
</ItemsControl>

0 个答案:

没有答案