Let TextBox stretch to fill width in StackPanel

microsoft-metro, stackpanel, textbox, windows-runtime, xaml

Solution

Unfortunately the alternative (DockPanel) isnt available for Metro. You could try a WrapGrid, but I dont know if it'll solve your problem (Ive never used it).

The only real way of doing this is using a Grid as you described:

<Grid Width="400">
    <Grid.ColumnDefinitions>
        <ColumnDefinition Width="Auto" />
        <ColumnDefinition />
    </Grid.ColumnDefinitions>
    <TextBlock Text="Label" Width="150" />
    <TextBox Text="Value" Grid.Column="1" />
</Grid>

Problem

I have a `StackPanel` in my WinRT C# Metro app that I want to use as container for a label/value pair (`TextBlock` and `TextBox`) like this: ``` <StackPanel Orientation="Horizontal" Width="400"> <TextBlock Text="Label" Width="150" /> <TextBox Text="Value" /> </StackPanel> ``` Now what I want is to let the TextBox automatically fill the remaining horizontal space of the StackPanel. Is this possible in any way? `HorizontalAlignment`/`HorizontalContentAlignment` don't work. I know that an alternative would be to define a `Grid` for that. The problem is that I have this construct several times and want to use it in a `Style` definition. I don't want to define the Grid's definition with rows and columns x times... Perhaps the alternative would be to define a custom user control, but I hoped there would be an easy possibility to get the `TextBox` to stretch.

Original source