2010-09-03 3 views
0

Для очень настраиваемого элемента управления календарем мне нужно иметь объект недели и привязать объекты Day в течение этой недели к сетке. Я подумал, что у меня будет перечисление DayOfWeek, которое решит, где день должен идти в сетку. Таким образом, если месяц начинается во вторник, у него будет свойство Grid.Column = "2". Но почему-то все они попадают в первую колонку, и я не знаю почему.Связывание DayOfWeek enum с пользовательской панелью управления календарем

<ItemsControl ItemsSource="{Binding Weeks}" SnapsToDevicePixels="True"> 
     <ItemsControl.ItemTemplate> 
      <DataTemplate> 
       <ItemsControl ItemsSource="{Binding Days}"> <!--7 most of the time--> 
        <ItemsControl.ItemsPanel> 
         <ItemsPanelTemplate> 
          <Grid> 
           <Grid.ColumnDefinitions> 
            <ColumnDefinition Width="28" /> 
            <ColumnDefinition Width="28" /> 
            <ColumnDefinition Width="28" /> 
            <ColumnDefinition Width="28" /> 
            <ColumnDefinition Width="28" /> 
            <ColumnDefinition Width="28" /> 
            <ColumnDefinition Width="28" /> 
           </Grid.ColumnDefinitions> 
          </Grid> 
         </ItemsPanelTemplate> 
        </ItemsControl.ItemsPanel> 
        <ItemsControl.ItemTemplate> 
         <DataTemplate> 
          <TextBlock Text="{Binding Date.Day}" Grid.Column="{Binding DayOfWeekInt}"/> 
         </DataTemplate> 
        </ItemsControl.ItemTemplate> 
       </ItemsControl> 
      </DataTemplate> 
     </ItemsControl.ItemTemplate> 
    </ItemsControl> 

И у меня есть, что привязка к собственности на объект день так:

public int DayOfWeekInt 
{ 
    get { return (int)Date.DayOfWeek; } 
} 

Любые идеи?

ответ

0

Оказывается, ItemsControl обертывает TextBlock с ContentPresenter, маскируя Grid.Column в TextBlock. Это можно облегчить, установив стиль в ContentPresenter:

<ItemsControl.Resources> 
    <Style TargetType="{x:Type ContentPresenter}"> 
     <Setter Property="Grid.Column" Value="{Binding Path=DayOfWeekInt}" /> 
    </Style> 
</ItemsControl.Resources> 
Смежные вопросы