Tengo el siguiente xaml, y quiero que los elementos de itemsControl se estiren y siempre toquen la izquierda y la derecha de la ventana. Probé HorizontalAlignment="Stretch" en ScrollViewer o / y ItemsControl

<Window x:Class="myClass"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    mc:Ignorable="d" Title="myTitle"
    Height="300" Width="300" 
    ResizeMode="CanResizeWithGrip">
<Grid>
    <ScrollViewer VerticalScrollBarVisibility="Auto" HorizontalAlignment="Stretch" Background="Blue" Width="300">
        <ItemsControl Name="myItemControl" HorizontalAlignment="Stretch" ItemsSource="{Binding myItemList}">
            <ItemsControl.ItemTemplate>
                <DataTemplate>
                    <Grid Margin="0,0,0,5">
                        <Grid.ColumnDefinitions>
                            <ColumnDefinition MinWidth="15" />
                            <ColumnDefinition MinWidth="100" />
                        </Grid.ColumnDefinitions>
                        <TextBlock Text="{Binding Id}" Grid.Column="0"/>
                        <TextBlock Text="{Binding Name}" Grid.Column="1"/>
                    </Grid>
                </DataTemplate>
            </ItemsControl.ItemTemplate>
        </ItemsControl>
    </ScrollViewer>
</Grid>
1
Cedric Royer-Bertrand 16 ago. 2016 a las 22:22

2 respuestas

La mejor respuesta

Tu objeto Grid llena muy bien tu ItemsControl. Sin embargo, si desea que el contenido real (Id y Name) toque los lados izquierdo y derecho, debe alinear el segundo TextBlock a la derecha . Por defecto, un control TextBlock está alineado a la izquierda.

<TextBlock HorizontalAlignment="Right" Text="{Binding Name}" Grid.Column="1"/>

La opción Stretch solo lo llevará hasta ahora. En realidad, no estirará el texto en un TextBlock, porque eso crearía texto deformado; no es el efecto que la mayoría de la gente pretende. Ahí es donde entra en juego la alineación izquierda y derecha de su contenido real.

0
Stewbob 16 ago. 2016 a las 20:20

Sus estiramientos están en ItemsControl que va a extender ItemsControl, no los elementos. Si desea estirar los elementos, debe estirar la cuadrícula en ItemTemplate.

0
SledgeHammer 16 ago. 2016 a las 19:57