0

我在 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();
    }
}

任何帮助,将不胜感激

4

1 回答 1

1

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>
于 2012-04-11T12:46:45.073 回答