itemControlにキャンバスがあり、データテンプレートには省略記号を使用しています。各楕円の位置は、午前6時から午後11時までの時刻を表します。キャンバスのサイズと楕円に割り当てられた時間がどこにあるかに基づいて、その値をバインドしています。エリスプトップはキャンバス内でまったく動いていません。バインディングを削除してハード値を使用しようとしましたが、それでも同じ場所にあります。
これがコンテナの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();
}
}
どんな助けでもいただければ幸いです