Mat*_*ias 29 xaml textbox stackpanel microsoft-metro windows-runtime
我有一个StackPanel在我的WinRT C#Metro应用程序中,我想用作标签/值对的容器(TextBlock和TextBox),如下所示:
<StackPanel Orientation="Horizontal" Width="400">
<TextBlock Text="Label" Width="150" />
<TextBox Text="Value" />
</StackPanel>
Run Code Online (Sandbox Code Playgroud)
现在我想要的是让TextBox自动填充StackPanel的剩余水平空间.这有可能吗?HorizontalAlignment/ HorizontalContentAlignment不工作.
我知道另一种方法是为此定义一个Grid.问题是我有几次构造,并希望在Style定义中使用它.我不想用行和列x次定义Grid的定义...
也许替代方案是定义一个自定义用户控件,但我希望有一个简单的可能性TextBox来扩展.
Dea*_*alk 24
不幸的是,替代方案(DockPanel)不适用于Metro.你可以试试WrapGrid,但我不知道它是否会解决你的问题(我从来没用过它).
这样做的唯一真正方法是使用您描述的网格:
<Grid Width="400">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" />
<ColumnDefinition />
</Grid.ColumnDefinitions>
<TextBlock Text="Label" Width="150" />
<TextBox Text="Value" Grid.Column="1" />
</Grid>
Run Code Online (Sandbox Code Playgroud)
Uяo*_*Koт 20
我不确定你投入HorizontalAlignment了哪个元素,但这对我有用:
<StackPanel>
<TextBlock Text="Title" Style="..."/>
<TextBlock Margin="0,0,0,10" Text="Description" Style="..."/>
<TextBox HorizontalAlignment="Stretch" />
<Button Margin="0" Content="Save"/>
</StackPanel>
Run Code Online (Sandbox Code Playgroud)
这延伸TextBox到整个宽度StackPanel.