2009-06-03 31 views

Respuesta

14

Use un Grid como elemento de nivel superior en su UI - se estirará hasta llenar su contenedor. Luego ponga un Canvas con HorizontalAlignment="Stretch" dentro del Grid y se comportará de la manera que desee.

<Grid xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"> 
    <Canvas Background="Blue"/> 
</Grid> 

Eso funcionó para mí. La clave es tu elemento de UI de nivel superior. Mientras que Grid llena todo el espacio disponible de forma predeterminada, Canvas es ocupar solo el espacio que exija su contenido.

+0

¿Sabes si es necesario el atributo "x: Class ="? Intenté usar Grid como contención pero por alguna razón todo simplemente desaparece. – resopollution

+0

esto no funcionaba para mí = ( – resopollution

+1

Cómo están probando que me pega esto en Kaxaml y funciona para mí, así que no es necesario el directorio x:? Atributo de clase:

1

Se puede usar un panel de muelle para conseguir que se ajuste a la anchura disponible. El último elemento en una lista de controles de panel de base se estira automáticamente para llenar el espacio restante.

<DockPanel> 
    <Canvas /> 
</DockPanel> 
+0

¿Hay alguna manera rápida de hacerlo para la etiqueta ? – resopollution

+0

Traté de eliminar la propiedad Altura y Ancho, pero todo simplemente desaparece. – resopollution

1

El lienzo debe hacer esto automáticamente, a menos que esté configurando manualmente la altura y/o el ancho. ¿En qué tipo de control estás tratando de colocar el lienzo? ¿Puedes publicar tu código?

+0

He publicado mi código. El lienzo es el principal elemento principal de toda la aplicación. – resopollution

+0

Traté de eliminar la propiedad Altura y Ancho, pero todo simplemente desaparece. – resopollution

4

supongo que has probado
canvas.HorizontalAlignment = HorizontalAlignment.Stretch

Si esto no funciona, entonces lo que podría hacer es obligar a los Width y Height propiedades de la lona para los ActualWidth y ActualHeight propiedades de la que contiene ventana.

+0

canvas.HorizontalAlignment = HorizontalAlignment.Stretch se realiza dentro del código C#? Solo tengo acceso a XAML. Tampoco tengo una ventana contenedora = (. Cuando hago el elemento vinculante, mi aplicación Silverlight falla. – resopollution

+1

Un poco tarde, pero para cualquiera con el mismo problema: '' '' en el código XAML funcionó bien en mi caso. Y te ahorra empacar cada lienzo en una cuadrícula (especialmente si tienes muchos de ellos). –

1

El problema es que está especificando Height y Width. Sin estas propiedades, el control puede parecer desaparecer en el diseñador, pero debe dimensionarse adecuadamente cuando inserte el lienzo en otro control.

Si no recuerdo mal, la próxima versión de WPF tendrá propiedades 'DesignWidth' y 'DesignHeight' que le permiten mostrar el control en el diseñador con un tamaño determinado sin afectar su medida cuando se inserta en otros controles.

Cuestiones relacionadas