无论如何,我无法在silverlight数据网格中的列周围动态添加边框。这是我的datagrid的xaml:
<sdk:DataGrid x:Name="PlannedAndBookedMonthlyTable" ItemsSource="{Binding}" AutoGenerateColumns="False" Margin="5,0,5,5">
<sdk:DataGrid.Columns>
<sdk:DataGridTextColumn x:Name="MonthlyHeaderName" Header="" Binding="{Binding SeriesName}" />
<sdk:DataGridTextColumn x:Name="MonthlyHeaderJan" Header="Jan" Binding="{Binding JanValue}" />
<sdk:DataGridTextColumn x:Name="MonthlyHeaderFeb" Header="Feb" Binding="{Binding FebValue}" />
<sdk:DataGridTextColumn x:Name="MonthlyHeaderMar" Header="Mar" Binding="{Binding MarValue}" />
<sdk:DataGridTextColumn x:Name="MonthlyHeaderApr" Header="Apr" Binding="{Binding AprValue}" />
<sdk:DataGridTextColumn x:Name="MonthlyHeaderMay" Header="May" Binding="{Binding MayValue}" />
<sdk:DataGridTextColumn x:Name="MonthlyHeaderJun" Header="Jun" Binding="{Binding JunValue}" />
<sdk:DataGridTextColumn x:Name="MonthlyHeaderJul" Header="Jul" Binding="{Binding JulValue}" />
<sdk:DataGridTextColumn x:Name="MonthlyHeaderAug" Header="Aug" Binding="{Binding AugValue}" />
<sdk:DataGridTextColumn x:Name="MonthlyHeaderSep" Header="Sep" Binding="{Binding SepValue}" />
<sdk:DataGridTextColumn x:Name="MonthlyHeaderOct" Header="Oct" Binding="{Binding OctValue}" />
<sdk:DataGridTextColumn x:Name="MonthlyHeaderNov" Header="Nov" Binding="{Binding NovValue}" />
<sdk:DataGridTextColumn x:Name="MonthlyHeaderDec" Header="Dec" Binding="{Binding DecValue}" />
<sdk:DataGridTextColumn x:Name="MonthlyHeaderTotal" Header="Total" Binding="{Binding Total}" />
</sdk:DataGrid.Columns>
</sdk:DataGrid>
这是我想要完成的效果:
如何在一列数据上设置边框,这取决于当前的日历月份?
答案 0 :(得分:1)
DataGrid中的每一行都是模板,每个单元格也是如此。普通的DataGrid没有单元格和当前单元格位置的概念,只有选定的行。
如果你能够获得足够的位置信息,我会说你可以覆盖DataGrid上的边框,但是调试器告诉我DataGrid中没有足够的信息来计算当前所选单元格的位置。
我可以想到使用DataGrid执行此操作的唯一方法是在单个单元格控件上捕获焦点事件(例如,DataGrid中的TextBox)并使用所选控件相对于父的位置找出边境位置。每列都需要是模板化列,以便您可以连接GotFocus事件。
...你需要尝试不同的控制来获得你想要的结果。
您可以使用普通的旧网格,例如完整的TextBox控件,但您需要自己处理网格的选择和键盘导航。
如果预算允许,我会四处寻找Silverlight的第三方电子表格控件。否则,看看是否有人在Codeplex或其他地方建立了一个。