2010-07-28 13 views
7

autorización I tienen una ContentPresenter dentro de una celda de la cuadrícula:¿Por qué el contentpresenter no llena la celda de la cuadrícula?

 <Grid> 
      <Grid.RowDefinitions> 
       <RowDefinition Height="Auto"></RowDefinition> 
       <RowDefinition></RowDefinition> 
      </Grid.RowDefinitions> 

      <Grid.ColumnDefinitions> 
       <ColumnDefinition></ColumnDefinition> 
      </Grid.ColumnDefinitions> 

      <WrapPanel Grid.Row="0" Grid.Column="0"> 
       <RadioButton GroupName="a" IsChecked="{Binding Path=SpecifyRatedValues, Mode=TwoWay}">Specify</RadioButton> 
       <RadioButton GroupName="b" IsChecked="{Binding Path=SpecifyRatedValues, Converter={StaticResource invertBoolean}}">Auto generate</RadioButton> 
      </WrapPanel> 

      <Border BorderBrush="Black" BorderThickness="3" Grid.Row="1" Grid.Column="0"> 
       <ContentPresenter Content="{Binding Path=RatedValues}"></ContentPresenter> 
      </Border>      
     </Grid> 

El ContentPresenter encuentra el cual elemento de interfaz de usuario para su uso por el DataTemplate se define en recursos:

<DataTemplate DataType="{x:Type ViewModels:RatedValuesViewModel}"> 
     <Views:RatedValuesView /> 
    </DataTemplate> 

Ahora, todo funciona como se esperaba, a excepción de Una cosa: la Vista que se coloca dentro del Contentpresenter en el tiempo de ejecución no se expande para llenar toda la celda. Deja un gran margen en el lado izquierdo y derecho.

¿Cómo puedo hacer que la vista dentro del contentpresenter llene toda el área disponible?

+1

Asegúrate de que no haya restricciones de tamaño explícitas/implícitas en la vista. – devios1

Respuesta

2

Chaiguy lo tengo! La Vista tenía un ancho y una altura explícitos que limitaban la vista cuando se colocaba en la celda. Gracias :-)

+0

Pasar una hora maldita para resolver esto, luego se encontró con esta pequeña respuesta: respondió por el OP, 0 upvotes. Pensé para mí mismo, que probablemente NUNCA vaya a ayudar, pero, echemos un vistazo de todos modos. Tadaaaaa, también declaré un ancho y una altura en mi control de usuario ... problema resuelto ... ¡Siéntate estúpido, aliviado y agradecido al mismo tiempo! :) +1 – bas

2

Debe establecer HorizontalAlign = Estirar, VerticalAlign = Estirar al borde y al Presentador de contenido para rellenar el espacio en la cuadrícula. y haz ancho = automático.

+0

Parece que no funciona – Marius

+0

Intente aplicarlo a también. –

9

HorizontalAlign = "Stretch" y VerticalAlign = "Stretch" son importantes; Sin embargo, también debe recordar cómo funcionan las Rejillas. Las unidades de cuadrícula están en píxeles absolutos, "Automático", lo que significa que se adaptan a sus contenidos (es decir, el tamaño mínimo para mostrar todo) o "estrellas", lo que significa que ocupan todo el espacio disponible.

Establezca su segunda altura de RowDefinition en "*". También es posible que desee establecer cepillos y grosores de borde fácilmente distinguibles en su cuadrícula. A veces, es fácil pensar que X no está llenando todo el espacio disponible, cuando realmente es el contenedor de X, o el contenedor del contenedor de X que no está llenando el espacio. Use colores primarios brillantes y espesores grandes (3 o menos) y podrá saber rápidamente quién no está llenando las cosas.

Cuestiones relacionadas