我正在尝试创建一个消息传递屏幕.这是我的XAML:
<phone:PhoneApplicationPage xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:phone="clr-namespace:Microsoft.Phone.Controls;assembly=Microsoft.Phone" xmlns:shell="clr-namespace:Microsoft.Phone.Shell;assembly=Microsoft.Phone" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:edc="clr-namespace:Microsoft.Expression.Controls;assembly=Microsoft.Expression.Drawing" xmlns:em="clr-namespace:Microsoft.Expression.Media;assembly=Microsoft.Expression.Drawing" mc:Ignorable="d" d:DesignWidth="480" d:DesignHeight="696" x:Class="chatScreen.MainPage" Orientation="Portrait" shell:SystemTray.IsVisible="True"> <phone:PhoneApplicationPage.Resources></phone:PhoneApplicationPage.Resources> <phone:PhoneApplicationPage.ApplicationBar> <shell:ApplicationBar> <shell:ApplicationBarIconButton IconUri="/icons/appbar.message.send.png" IsEnabled="True" Text="send"/> </phone:PhoneApplicationPage.ApplicationBar> <!--LayoutRoot is the root grid where all page content is placed--> <Grid x:Name="LayoutRoot" Background="Transparent"> <Grid.RowDefinitions> <RowDefinition Height="Auto"/> <RowDefinition Height="*"/> <RowDefinition Height="auto"/> </Grid.RowDefinitions> <Grid x:Name="userInfo" Grid.Row="0" Margin="12,0"> <Grid.ColumnDefinitions> <ColumnDefinition Width="15" /> <ColumnDefinition Width="84" /> <ColumnDefinition Width="*" /> <ColumnDefinition Width="48"/> </Grid.ColumnDefinitions> <Image x:Name="PresenceIcon" Grid.Column="0" Height="64" Width="12" HorizontalAlignment="Left" VerticalAlignment="Bottom" Source="available.jpg" /> <Image x:Name="DisplayImage" Grid.Column="1" Height="64" Width="64" HorizontalAlignment="Left" VerticalAlignment="Bottom" Source="tony.jpg" Margin="0" /> <Grid x:Name="MetaContact_info" Grid.Column="2"> <Grid.RowDefinitions> <RowDefinition Height="*"/> <RowDefinition Height="*" /> </Grid.RowDefinitions> <TextBlock x:Name="DisplayName" Grid.Row="0" Text="Tony Stark" TextWrapping="NoWrap" FontSize="40" /> <TextBlock x:Name="DisplayStatus" Grid.Row="1" Text="enjoying windows phone" FontSize="18" TextTrimming="WordEllipsis" /> </Grid> <Image x:Name="ServiceIcon" Grid.ColumnSpan="2" Grid.Column="3" Source="service_gtalk.jpg" Width="24" Height="24" VerticalAlignment="Top" Margin="0,20,0"/> </Grid><!-- userInfo ends --> <Grid x:Name="ContentPanel" Grid.Row="1" Margin="12,18,12,12"> <Grid.RowDefinitions> <RowDefinition Height="auto" /> <RowDefinition Height="*"/> </Grid.RowDefinitions> <ScrollViewer x:Name="messages" Grid.Row="0" HorizontalContentAlignment="Stretch" VerticalContentAlignment="Stretch" Margin="0"/> </Grid> <ScrollViewer x:Name="inputBox_scroller" Grid.Row="2" Margin="0" MaxHeight="108" VerticalAlignment="Bottom"> <TextBox x:Name="inputBox" TextWrapping="Wrap" HorizontalContentAlignment="Stretch" Text="" FontSize="{StaticResource PhoneFontSizeMedium}" InputScope="Chat" AcceptsReturn="True" /> </ScrollViewer><!-- Content Panel ends -->
我也使用Jeff Wilcox的PhoneThemeManager 1.2来使我的应用程序始终加载浅色主题.
当我在这个屏幕上有appBar并且键盘打开时,在textBox下方有大约48 px的额外边距.当手机主题为黑色时,会在键盘上方和textBox下方显示一个丑陋的黑条.当手机主题为白色时,此黑色条为白色.以下是更好地演示的屏幕截图:
但是,当我禁用appbar然后打开键盘时,textBox下面的这个额外边距不存在.
我想在键盘打开时禁用这个额外的余量,就像它在appBar所在的消息传递集线器中发生的那样,以及自动正确的键盘条,仍然没有这个额外的余量.
解决方法
唯一的方法(现在已知)是在您输入时禁用AppBar.