Windows phone 8.1 Wp 8.1模板控制加载问题

Windows phone 8.1 Wp 8.1模板控制加载问题,windows-phone-8.1,winrt-xaml,Windows Phone 8.1,Winrt Xaml,我从TextBox继承了TemplatedControl。若我把它放在起始页上,它在第一次导航时并没有正确加载。 有,而不是。我需要在加载控件的事件上调用InvalidateMeasure()以正确显示它。若我在调试模式下运行应用程序,我看不到这个问题。怎么了 布局定义: <controls:HeaderedContentControl Header="Регистрация"> <StackPanel Margin="10,40"> <Te

我从TextBox继承了TemplatedControl。若我把它放在起始页上,它在第一次导航时并没有正确加载。 有,而不是。我需要在加载控件的事件上调用InvalidateMeasure()以正确显示它。若我在调试模式下运行应用程序,我看不到这个问题。怎么了

布局定义:

<controls:HeaderedContentControl Header="Регистрация">
    <StackPanel Margin="10,40">
        <TextBlock Text="Номер телефона:"
                   FontSize="20"/>
        <Grid Margin="0,15">
            <Grid.ColumnDefinitions>
                <ColumnDefinition Width="Auto"/>
                <ColumnDefinition/>
            </Grid.ColumnDefinitions>
            <TextBlock Text="8"
                       Margin="10,0"
                       VerticalAlignment="Center"
                       FontSize="20"/>
            <controls:PhoneTextBox Value="{Binding PhoneNumber, Mode=TwoWay}"
                                   AddContactVisibility="Collapsed"
                                   Margin="0"
                                   Grid.Column="1"/>
        </Grid>
        <TextBlock Text="Номер вводится без 8-ки. Пример: (XXX)XXX-XX-XX"
                   FontSize="15"
                   Foreground="Gray"
                   TextWrapping="WrapWholeWords"/>
    </StackPanel>
</controls:HeaderedContentControl>

<Page.BottomAppBar>
    <CommandBar>
        <AppBarButton Label="Далее"
                      Icon="Accept"
                      Command="{Binding RegisterCommand}"/>
    </CommandBar>
</Page.BottomAppBar>
<Style TargetType="controls:PhoneTextBox">
        <Setter Property="InputScope" Value="Number"/>
        <Setter Property="BorderThickness" Value="1"/>
        <Setter Property="BorderBrush" Value="Black"/>
        <Setter Property="Template">
            <Setter.Value>
                <ControlTemplate TargetType="controls:PhoneTextBox">
                    <Grid>
                        <Grid.RowDefinitions>
                            <RowDefinition/>
                            <RowDefinition/>
                        </Grid.RowDefinitions>
                        <ContentPresenter x:Name="HeaderContentPresenter"
                                          Foreground="Gray"
                                          Margin="0,4,0,4"
                                          Grid.ColumnSpan="2"
                                          Content="{TemplateBinding Header}"
                                          ContentTemplate="{TemplateBinding HeaderTemplate}"
                                          FontWeight="Semilight"
                                          FontSize="17"/>
                        <Border Background="{TemplateBinding Background}"
                                BorderBrush="{TemplateBinding BorderBrush}"
                                BorderThickness="{TemplateBinding BorderThickness}"
                                CornerRadius="{TemplateBinding CornerRadius}"
                                HorizontalAlignment="Stretch"
                                Grid.Row="1">
                            <Grid Name="grdContent">
                                <Grid.ColumnDefinitions>
                                    <ColumnDefinition/>
                                    <ColumnDefinition Width="Auto"/>
                                </Grid.ColumnDefinitions>

                                <Grid Margin="{TemplateBinding Padding}">
                                    <Grid.ColumnDefinitions>
                                        <ColumnDefinition Width="Auto"/>
                                        <ColumnDefinition/>
                                        <ColumnDefinition Width="Auto"/>
                                    </Grid.ColumnDefinitions>
                                    <TextBlock Text="{TemplateBinding LockedText}" 
                                               Margin="3"
                                               Grid.Column="0"/>
                                    <Grid Grid.Column="1">
                                        <ScrollViewer x:Name="ContentElement"
                                                      HorizontalScrollBarVisibility="{TemplateBinding ScrollViewer.HorizontalScrollBarVisibility}"
                                                      VerticalScrollBarVisibility="{TemplateBinding ScrollViewer.VerticalScrollBarVisibility}"
                                                      IsDeferredScrollingEnabled="{TemplateBinding ScrollViewer.IsDeferredScrollingEnabled}"
                                                      ZoomMode="Disabled"/>
                                        <ContentControl x:Name="PlaceholderTextContentPresenter"
                                                        Grid.Column="1"
                                                        Foreground="{ThemeResource TextBoxPlaceholderTextThemeBrush}"
                                                        IsTabStop="False"
                                                        Content="{TemplateBinding PlaceholderText}" 
                                                        IsHitTestVisible="False"/>
                                    </Grid>
                                </Grid>                                
                            </Grid>
                        </Border>
                    </Grid>
                </ControlTemplate>
            </Setter.Value>
        </Setter>
    </Style>

和TemplatedControl定义:

<controls:HeaderedContentControl Header="Регистрация">
    <StackPanel Margin="10,40">
        <TextBlock Text="Номер телефона:"
                   FontSize="20"/>
        <Grid Margin="0,15">
            <Grid.ColumnDefinitions>
                <ColumnDefinition Width="Auto"/>
                <ColumnDefinition/>
            </Grid.ColumnDefinitions>
            <TextBlock Text="8"
                       Margin="10,0"
                       VerticalAlignment="Center"
                       FontSize="20"/>
            <controls:PhoneTextBox Value="{Binding PhoneNumber, Mode=TwoWay}"
                                   AddContactVisibility="Collapsed"
                                   Margin="0"
                                   Grid.Column="1"/>
        </Grid>
        <TextBlock Text="Номер вводится без 8-ки. Пример: (XXX)XXX-XX-XX"
                   FontSize="15"
                   Foreground="Gray"
                   TextWrapping="WrapWholeWords"/>
    </StackPanel>
</controls:HeaderedContentControl>

<Page.BottomAppBar>
    <CommandBar>
        <AppBarButton Label="Далее"
                      Icon="Accept"
                      Command="{Binding RegisterCommand}"/>
    </CommandBar>
</Page.BottomAppBar>
<Style TargetType="controls:PhoneTextBox">
        <Setter Property="InputScope" Value="Number"/>
        <Setter Property="BorderThickness" Value="1"/>
        <Setter Property="BorderBrush" Value="Black"/>
        <Setter Property="Template">
            <Setter.Value>
                <ControlTemplate TargetType="controls:PhoneTextBox">
                    <Grid>
                        <Grid.RowDefinitions>
                            <RowDefinition/>
                            <RowDefinition/>
                        </Grid.RowDefinitions>
                        <ContentPresenter x:Name="HeaderContentPresenter"
                                          Foreground="Gray"
                                          Margin="0,4,0,4"
                                          Grid.ColumnSpan="2"
                                          Content="{TemplateBinding Header}"
                                          ContentTemplate="{TemplateBinding HeaderTemplate}"
                                          FontWeight="Semilight"
                                          FontSize="17"/>
                        <Border Background="{TemplateBinding Background}"
                                BorderBrush="{TemplateBinding BorderBrush}"
                                BorderThickness="{TemplateBinding BorderThickness}"
                                CornerRadius="{TemplateBinding CornerRadius}"
                                HorizontalAlignment="Stretch"
                                Grid.Row="1">
                            <Grid Name="grdContent">
                                <Grid.ColumnDefinitions>
                                    <ColumnDefinition/>
                                    <ColumnDefinition Width="Auto"/>
                                </Grid.ColumnDefinitions>

                                <Grid Margin="{TemplateBinding Padding}">
                                    <Grid.ColumnDefinitions>
                                        <ColumnDefinition Width="Auto"/>
                                        <ColumnDefinition/>
                                        <ColumnDefinition Width="Auto"/>
                                    </Grid.ColumnDefinitions>
                                    <TextBlock Text="{TemplateBinding LockedText}" 
                                               Margin="3"
                                               Grid.Column="0"/>
                                    <Grid Grid.Column="1">
                                        <ScrollViewer x:Name="ContentElement"
                                                      HorizontalScrollBarVisibility="{TemplateBinding ScrollViewer.HorizontalScrollBarVisibility}"
                                                      VerticalScrollBarVisibility="{TemplateBinding ScrollViewer.VerticalScrollBarVisibility}"
                                                      IsDeferredScrollingEnabled="{TemplateBinding ScrollViewer.IsDeferredScrollingEnabled}"
                                                      ZoomMode="Disabled"/>
                                        <ContentControl x:Name="PlaceholderTextContentPresenter"
                                                        Grid.Column="1"
                                                        Foreground="{ThemeResource TextBoxPlaceholderTextThemeBrush}"
                                                        IsTabStop="False"
                                                        Content="{TemplateBinding PlaceholderText}" 
                                                        IsHitTestVisible="False"/>
                                    </Grid>
                                </Grid>                                
                            </Grid>
                        </Border>
                    </Grid>
                </ControlTemplate>
            </Setter.Value>
        </Setter>
    </Style>


在问题中给出您的Xaml代码。这将有助于解决你的问题。@Boris,我已经更新了这个问题。