我想将Button
放在TextBox
中,但是由于发现不可能,所以我决定执行以下操作:
Xaml如下所示:
<Border Grid.Row="4" Grid.Column="2" Margin="10,0,10,0"
BorderBrush="Gray" BorderThickness="1">
<StackPanel Orientation="Horizontal" Margin="0,0,0,0">
<TextBox BorderBrush="LightGray" BorderThickness="1" Text="{Binding WaybillNumber}"
Width="245"/>
<Button Content="*" Width="15" BorderThickness="1"/>
</StackPanel>
</Border>
我的问题是,当我调整窗口大小(减小宽度)时,我的Button
消失了:
我希望它的行为像DateTimePicker
一样。我尝试了多种方法来自动调整TextBox
的宽度(*
的宽度不是正确的输入,auto
减小了TextBox
的宽度,我也尝试定义样式资源在StackPanel
资源中使用TextBox
宽度,但它也无法正常工作),但尚未找到正确的方法。
答案 0 :(得分:1)
将StackPanel
替换为Grid
:
<Border Margin="10,0,10,0" BorderBrush="Gray" BorderThickness="1">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*" />
<ColumnDefinition Width="Auto" />
</Grid.ColumnDefinitions>
<TextBox BorderBrush="LightGray" BorderThickness="1" Text="{Binding WaybillNumber}" />
<Button Grid.Column="1" Content="*" Width="15" BorderThickness="1"/>
</Grid>
</Border>
答案 1 :(得分:1)
使用Grid而不是StackPanel。对于自适应布局,设置固定大小(宽度/高度)不是一个好主意。网格将允许TextBox拉伸。
一个选项是为TextBox和Button具有单独的列:
<?php
error_reporting(E_ALL);
ini_set('display_errors', 'Off');
//error handler function
function customError($errno, $errstr) {
echo "<b>Error:</b> [$errno] $errstr<br>";
echo "Webmaster has been notified";
error_log("Error: [$errno] $errstr",1,
"uwe.nachname@gmail.com","From: webmaster@example.com");
}
//set error handler
set_error_handler("customError",E_ALL);
echo 'now the error: ';
echo gibtsnicht();
?>
或者将它们放在相同的单元格中,并让Button与TextBox重叠(看起来像TextBox的一部分,但可以隐藏长文本的一部分):
<Border Grid.Row="4" Grid.Column="2" Margin="10,0,10,0"
BorderBrush="Gray" BorderThickness="1">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="Auto"/>
</Grid.ColumnDefinitions>
<TextBox BorderBrush="LightGray" BorderThickness="1" Text="{Binding WaybillNumber}" />
<Button Content="*" Grid.Column="1" Width="15" BorderThickness="1"/>
</Grid>
</Border>