【发布时间】:2013-02-26 01:50:28
【问题描述】:
我目前正在使用 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}" />
所以现在我想映射网格中的每个复选框,我可以在其中收集复选框是否被选中以及它在哪个网格行和列中,我该怎么做?
【问题讨论】:
-
蓝色边框是默认
ListBox样式的一部分。你可以很容易地改变它。
标签: c# wpf grid interactive