2010-09-03 71 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使用ContentPresenter封裝了TextBlock,掩蓋了TextBlock上的Grid.Column。這可以通過在ContentPresenter上設置樣式來減輕:

<ItemsControl.Resources> 
    <Style TargetType="{x:Type ContentPresenter}"> 
     <Setter Property="Grid.Column" Value="{Binding Path=DayOfWeekInt}" /> 
    </Style> 
</ItemsControl.Resources>