我目前正在使用 C# WPF 4.5 并试图创建一个交互式网格。给定网格单元格的正方形大小(宽度 = 高度)、列数和行数,我想在屏幕上动态生成网格。
对于生成的网格,我希望网格线可见。我认为这可以通过在每个单元格内绘制一个边框来模拟,如果没有别的。最重要的是,我需要一个事件来确定用户单击的单元格(即单击返回网格列和行时),并且能够一次选择一个或多个单元格。
关于如何创建这样的东西的任何帮助或想法,或者有更好的方法吗?提前致谢!
编辑:所以这是我取得的一些进展:
创建了一个自定义复选框:
<Style x:Key="styleCustomCheckBox" TargetType="{x:Type CheckBox}"> <Setter Property="Template"> <Setter.Value> <ControlTemplate TargetType="{x:Type CheckBox}"> <Grid x:Name="Background" Background="Transparent"> <Rectangle x:Name="fillCheckBox"/> </Grid> <ControlTemplate.Triggers> <Trigger Property="IsChecked" Value="False"> <Setter TargetName="fillCheckBox" Property="Fill" Value="Transparent"/> </Trigger> <Trigger Property="IsChecked" Value="True"> <Setter TargetName="fillCheckBox" Property="Fill" Value="Red"/> <Setter TargetName="fillCheckBox" Property="Opacity" Value=".3"/> </Trigger> </ControlTemplate.Triggers> </ControlTemplate> </Setter.Value> </Setter> </Style>
然后只需使用该样式的自定义复选框填充网格:
<CheckBox Grid.Column="1" Grid.Row="1" Style="{StaticResource styleCustomCheckBox}" />
所以现在我想在网格中映射每个复选框,我可以在其中收集复选框是否被选中以及它在哪个网格行和列中,我该怎么做?