Граница DataGrid Silverlight 4 вокруг столбца - PullRequest
0 голосов
/ 07 октября 2010

Мне так и не удалось найти динамического добавления границы вокруг столбца в сетке данных серебряного света. Вот мой 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>

Это эффект, которого я хочу достичь:

alt text

Как установить границу для столбца данных, который зависит от того, какой это текущий календарный месяц?

1 Ответ

1 голос
/ 07 октября 2010

Каждая строка в DataGrid является шаблоном, как и каждая ячейка. Обычный DataGrid не имеет понятия ячеек и текущих позиций ячеек, только выбранные строки.

Если бы вы смогли получить достаточно информации о местоположении, я бы сказал, что вы можете наложить границу на DataGrid, но отладчик показывает, что в DataGrid недостаточно информации, чтобы даже рассчитать положение текущей выбранной ячейки.

Один из возможных вариантов

Единственный способ думать об этом с помощью DataGrid - перехватывать события фокуса на отдельных элементах управления ячейки (например, TextBoxes в DataGrid) и использовать положение выбранного элемента управления относительно родительского отработать пограничную позицию. Каждый столбец должен быть шаблонным столбцом, чтобы вы могли подключить события GotFocus.

В противном случае ...

... вам нужно будет использовать другой вид контроля, чтобы получить желаемый результат.

Вы можете использовать простую старую сетку, например, полный элементов управления TextBox, но вам придется самостоятельно обрабатывать выделение и навигацию с клавиатуры по сетке.

Если позволяет бюджет, я бы искал сторонний элемент управления электронными таблицами для Silverlight. В противном случае посмотрите, построил ли кто-нибудь его на Codeplex или где-либо еще.

...