Мне удалось это сделать в Windows Phone 8.1, но осталось не так много места для текстового поля с кнопкой сохранения внизу и верхними заголовками выше.
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="*" />
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<!--ScrollViewer Background="#302010" HorizontalAlignment="Stretch" VerticalAlignment="Stretch"-->
<TextBox x:Name="text"
ManipulationDelta="textList_ManipulationDelta" ManipulationMode="Scale"
HorizontalAlignment="Stretch" VerticalAlignment="Stretch"
TextWrapping="Wrap" AcceptsReturn="True"
>
</TextBox>
<Rectangle x:Name="rectRed" Fill="Red" Grid.Row="2" Height="10" />
<Rectangle HorizontalAlignment="Stretch" VerticalAlignment="Stretch" Grid.Row="1" Fill="#30000000" />
<StackPanel x:Name="stackAppBar" Orientation="Horizontal" Grid.Row="1" HorizontalAlignment="Center">
<AppBarButton Icon="Save" Label="Save" IsCompact="true" x:Name="buttonSave" Click="buttonSave_Click"/>
<!--AppBarButton Icon="Delete" Label="Delete" IsCompact="true"/-->
</StackPanel>
<!--Rectangle x:Name="rectKeyboard" Fill="Red" Grid.Row="2" Height="200" /-->
</Grid>
async void UCSetup_Loaded(object sender, RoutedEventArgs e)
{
// put text in box
string s = await IO.ReadSetupFile();
text.Text = s;
InputPane.GetForCurrentView().Showing += UCSetup_Showing;
InputPane.GetForCurrentView().Hiding += UCSetup_Hiding;
}
void UCSetup_Hiding(InputPane sender, InputPaneVisibilityEventArgs args)
{
var size = args.OccludedRect;
rectRed.Height = size.Height;
}
void UCSetup_Showing(InputPane sender, InputPaneVisibilityEventArgs args)
{
var size = args.OccludedRect;
rectRed.Height = size.Height;
}
Я попытался обработать события GotFocus и LostFocus для TextBox, но в обоих случаях он просто говорит, что высота OccdedRect равна 0.0. Кроме того, я попытался обработать InputPane.GetForCurrentView(). Отображение события, но это никогда не срабатывает. –
Я не верю, что InputPane корректно работает с XAML (не пробовал родной, он должен работать там). Моя идея заключалась в том, что вы узнаете, когда это произойдет, а затем настройте свои высоты на основе размера клавиатуры (что относительно сложно). – Oren
Что делать, если устройство имеет аппаратную клавиатуру? –