Tengo un ItemsControl que dibuja miles de elipses en un diagrama de dispersión en un lienzo. Mi problema es si posiciono una elipse en las coordenadas (4, 6) con una altura y un ancho de 10. La parte superior izquierda de la elipse está en (4, 6) y la forma se extiende hacia abajo y hacia la derecha.WPF Center Ellipse en X, Y
Lo que me gustaría hacer es centrar las elipses en coordenadas específicas en XAML sin tener que usar ajustes en mi capa de ViewModel.
Aquí está el control de usuario de trabajo que tiene mi gráfico:
<Grid>
<ItemsControl ItemsSource="{Binding State.Data}">
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<Canvas ClipToBounds="False"/>
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
<ItemsControl.ItemContainerStyle>
<Style TargetType="ContentPresenter">
<Setter Property="Canvas.Left" Value="{Binding Path=X}" />
<Setter Property="Canvas.Top" Value="{Binding Path=Y}" />
</Style>
</ItemsControl.ItemContainerStyle>
<ItemsControl.ItemTemplate>
<DataTemplate>
<Ellipse Fill="Red" VerticalAlignment="Center" HorizontalAlignment="Center" Width="10" Height="20"/>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
</Grid>
Esto funciona muy bien a excepción de las elipses no centrados. ¿Algunas ideas?
Si hago eso, entonces tendré que conocer el radio de la Elipse para poder centrarlo correctamente donde yo quiero. Realmente me gustaría evitar hacer eso para poder jugar con mi Vista y mantener esas elipsis centradas. – bufferz
@bufferz: No te entiendo. ¿Cómo crees que puedes lograr esto sin conocer los parámetros exactos de tu forma? Como señaló djacobson, no necesitas saber el radio, cuando tienes ancho y alto. –
Esperaba que esto se pudiera hacer automáticamente, sin que tuviera que conocer el radio (o el ancho/alto) de la elipse. Algo así como cómo se puede centrar un TextBlock o etiqueta sin saber la longitud de su contenido. – bufferz