2016-05-31 18 views
1

Meine Seitenstruktur ist unten abgebildet.UWP Visual State Manager sieht keinen Inhalt von DataTemplate

<ScrollViewer VerticalScrollBarVisibility="Auto"> 
    <VisualStateManager.VisualStateGroups> 
     <VisualStateGroup x:Name="VisualStateGroup"> 
      <VisualState x:Name="VisualStateNarrow"> 
       <VisualState.StateTriggers> 
        <AdaptiveTrigger MinWindowWidth="1"/> 
       </VisualState.StateTriggers> 
       <VisualState.Setters> 

       </VisualState.Setters> 
      </VisualState> 
      <VisualState x:Name="VisualStateWide"> 
       <VisualState.StateTriggers> 
        <AdaptiveTrigger MinWindowWidth="800"/> 
       </VisualState.StateTriggers> 
       <VisualState.Setters> 


       </VisualState.Setters> 
      </VisualState> 
     </VisualStateGroup> 
    </VisualStateManager.VisualStateGroups> 


    <Grid Background="White"> 

    <Grid.RowDefinitions> 
     <RowDefinition Height="Auto" /> 
     <RowDefinition Height="Auto" /> 
     <RowDefinition Height="*" /> 
     <RowDefinition Height="*" /> 
    </Grid.RowDefinitions> 
    <Grid.ColumnDefinitions> 
     <ColumnDefinition Width="*" /> 
     <ColumnDefinition Width="*" /> 
    </Grid.ColumnDefinitions> 

    <Pivot x:Name="PivotPlatform" Margin="0" ItemsSource="{Binding PivotItems}" Grid.Row="2"> 


     <Pivot.HeaderTemplate> 
      <DataTemplate> 
       <StackPanel Height="0" Width="0"> 
        <TextBlock Text="{Binding}" /> 
       </StackPanel> 
      </DataTemplate> 
     </Pivot.HeaderTemplate> 

     <Pivot.ItemTemplate> 
      <DataTemplate> 
       <Grid xmlns:uwp="using:AmazingPullToRefresh.Controls"> 
        <Grid.RowDefinitions> 
         <RowDefinition Height="Auto" /> 
         <RowDefinition Height="*" /> 
        </Grid.RowDefinitions> 

        <uwp:PullToRefreshAdorner.Extender> 
         <uwp:PullToRefreshExtender RefreshRequested="PullToRefreshExtender_RefreshRequested" /> 
        </uwp:PullToRefreshAdorner.Extender> 

        <RelativePanel x:Name="contentPanel" Grid.Row="0" Margin="10 -30 10 10"> 
         <TextBlock Name="titleTB" Text="{Binding Title}" FontSize="12" 
            RelativePanel.AlignLeftWithPanel="True" 
            RelativePanel.AlignTopWithPanel="True"/> 
         <TextBlock Name="totalTB" Text="{Binding Total}" FontSize="18" 
           RelativePanel.AlignLeftWithPanel="True" 
           RelativePanel.Below="titleTB" /> 
         <ProgressBar Name="progressBar" Value="{Binding ProgressValue}" Width="100" Foreground="{StaticResource currentThemeColor}" 
            RelativePanel.AlignLeftWithPanel="True" RelativePanel.Below="totalTB" 
            Margin="0 5 0 0"/> 
         <TextBlock Name="dateTB" Text="{Binding Date}" FontSize="16" 
           RelativePanel.AlignRightWithPanel="True" 
           RelativePanel.AlignTopWithPanel="True" /> 
        </RelativePanel> 

         <ScrollViewer Grid.Row="1" VerticalScrollBarVisibility="Auto"> 
          <Charting:Chart Grid.Row="1" x:Name="LineChart" 
            Margin="10" > 
           <Charting:LineSeries Title="" IndependentValuePath="Name" DependentValuePath="Amount" 
              IsSelectionEnabled="False" ItemsSource="{Binding Result}" /> 

          </Charting:Chart> 
         </ScrollViewer> 

        </Grid> 
      </DataTemplate> 
     </Pivot.ItemTemplate> 

    </Pivot> 

Als ich Setter für dateTB TextBlock- in VisualState.Setters hinzufügen, um es auf die linke Seite der Relative-Panel zu bewegen, bekomme ich eine Fehlermeldung, dass:

Eine Animation versucht, ein Objekt mit dem Namen "dateTB" zu ändern, aber kein solches Objekt kann auf der Seite gefunden werden.

-Code für die Setter-Zugabe ist:

<Setter Target="dateTB.(RelativePanel.AlignLeftWithPanel)" Value="True"/> 

Gibt es eine Möglichkeit, diesen Textblock über Visual State Manager mit dieser Seitenstruktur zu kontrollieren?

+0

Ihr * TextBlock * ist innerhalb * DataTemplate *, deshalb erhalten Sie die Ausnahme. – Romasz

+0

@Romasz Ja, das ist der Fall. Aber wenn ich das DataTemplate entferne, erhalte ich den Fehler, dass ItemTemplate den Typ Grid nicht unterstützt. Kennen Sie eine Möglichkeit, ein ItemTemplate zu erstellen, das in VisualStateManager sichtbar ist? – alminh

+2

Haben Sie versucht, Ihren VisualStatemanager in das Datatemplate unter gird zu legen? – Romasz

Antwort

4

Es ist ein Problem von Namensbereichen, die allen XAML UI-Frameworks gemeinsam sind. Ihr VSM ist im Namensumfang Ihrer UserControl oder Page und der TextBlock ist in einer DataTemplate.

Romasz Lösung für Ihr Problem, die VSM innerhalb der DataTemplate setzen Sie alles, was Sie brauchen in einem einzigen Namen Bereich und ist die beste Lösung für dieses Problem.