2012-04-10 21 views
0

私はitemControlにキャンバスを持っていますが、私は省略記号を使っています。各楕円の位置は、午前6時から午後11時の時刻を表します。私はその値をキャンバスのサイズと楕円に割り当てられた時間に基づいて拘束しています。 ellispseのトップはキャンバス内を全く動かない。私はバインディングを削除しようとしているし、ハード値を使用し、それは同じ場所にまだあります。ここでCanvas.Topはレンダリングされません

は、XAMLは、ここではコンテナ

 <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> 

のためである私は、問題は削除それがどれ楕円

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

+0

であるべきだと思います。このバグを修正しましたが、同じことをやっています。ハードコーディングされた番号に切り替えることを試みましたが、これはまだ動作しません。 – joshwl2003

答えて

0

Canvasコントロールの高さは設定されていますか?

ConverterのConvertメソッドの最初の行にブレークポイントを設定して、それが呼び出されたかどうかを確認できますか?

...代わりにこれを試してみてください:私はすぐに気づい

<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

+0

あなたのための解決策を見つけました:)代わりに、キャンバスとのItemsControlをラップItemsPanelTemplateを使用しての 、そのようなこと: <キャンバスVerticalAlignmentを= "ストレッチ"> ....

+0

感謝君は!私はなぜこれが3日間働いていないのか理解しようとしています! :) – joshwl2003

関連する問題