2012-04-10 92 views
0

我有一個畫布在itemControl和我使用省略號數據模板。每個橢圓的位置表示一天中早上6點至晚上11點的時間。我根據畫布的大小和分配給橢圓的時間落在哪裏來綁定該值。 ellispse頂部並沒有在畫布中移動。我試圖刪除綁定並使用硬性值,它仍然在同一個地方。了Canvas.Top不渲染

這裏是容器

 <ItemsControl Grid.Column="1" ItemsSource="{Binding AngerData}" VerticalAlignment="Stretch" Canvas.ZIndex="1"> 
      <ItemsControl.ItemsPanel> 
       <ItemsPanelTemplate> 
        <Canvas VerticalAlignment="Stretch"></Canvas> 
       </ItemsPanelTemplate> 
      </ItemsControl.ItemsPanel> 
      <ItemsControl.ItemTemplate> 
       <DataTemplate> 
        <Ellipse Height="10" Width="10" Stroke="White" StrokeThickness="1" 
          Canvas.Top="{Binding Top, Converter={StaticResource ResourceKey=ellipsePositionConverter}, ConverterParameter=Month}" >" 
          Fill="{Binding AngerRating, Converter={StaticResource angerRatingConverter}}" 
          Canvas.ZIndex="100"> 
        </Ellipse> 
       </DataTemplate> 
      </ItemsControl.ItemTemplate> 
     </ItemsControl> 

在這裏,XAML是我不認爲轉換器是因爲刪除它不動橢圓

public class CalendarDayEllipsePositionConverter : IValueConverter 
{ 
    public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) 
    { 
     double gridPosition = 0; 

     if (parameter.ToString().Equals("Month", StringComparison.InvariantCultureIgnoreCase)) 
     { 
      gridPosition = double.Parse(value.ToString()) * 110; 
     } 

     return gridPosition; 
    } 

    public object ConvertBack(object value, Type targetTypes, object parameter, System.Globalization.CultureInfo culture) 
    { 
     throw new NotImplementedException(); 
    } 
} 

任何位置的問題幫助將不勝感激

+0

有一件事我馬上注意到的是,你有'Canvas.Top = 「Canvas.Top =」{Binding'。我認爲這應該只是'Canvas.Top =「{Binding'。 – oltman 2012-04-10 21:49:38

+0

我修正了這個錯誤,它仍然在做同樣的事情我已經嘗試切換回硬編碼的號碼,這仍然不起作用 – joshwl2003 2012-04-11 22:10:43

回答

0

是否Canvas控件的高度設置?

你可以把在轉換器,轉換方法的第一行設置一個斷點只是爲了檢查它是否叫什麼名字?

...試試這個:

<Canvas VerticalAlignment="Stretch"> 
      <ItemsControl Grid.Column="1" 
         VerticalAlignment="Stretch" 
         Canvas.ZIndex="1" 
         ItemsSource="{Binding AngerData}"> 
       <ItemsControl.ItemTemplate> 
        <DataTemplate> 
         <Ellipse Canvas.Top="{Binding 
                Converter={StaticResource ResourceKey=ellipsePositionConverter}, 
                ConverterParameter=Month}" 
          Width="10" 
          Height="10" 
          Canvas.ZIndex="100" 
          Fill="Red" 
          Stroke="White" 
          StrokeThickness="1" /> 
        </DataTemplate> 
       </ItemsControl.ItemTemplate> 

      </ItemsControl> 
     </Canvas> 
+0

轉換方法總是被調用和計算正確,我試着設置畫布的高度,然後將橢圓位置設置爲一個值,它仍然顯示在完全相同的位置::( – joshwl2003 2012-04-11 22:11:55

+0

好吧,我找到了一個解決方案:) 代替使用ItemsPanelTemplate包裹的ItemsControl與帆布,類似的東西的: <帆布VerticalAlignment = 「拉伸」> .... 2012-04-12 06:16:15

+0

謝謝您!我一直在試圖弄清楚爲什麼這不能工作3天! :) – joshwl2003 2012-04-12 12:58:08