2016-05-31 12 views
1

我的頁面結構如下所示。UWP Visual State Manager沒有看到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> 

當我添加制定者dateTB文本塊到VisualState.Setters將其移動到相對面板的左側,我得到一個錯誤說:

動畫試圖修改名爲'dateTB'的對象,但在頁面中找不到這樣的對象。

代碼添加二傳手是:

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

有沒有辦法來控制通過視覺狀態管理本頁面結構這個文本塊?

+0

你的* TextBlock *在* DataTemplate *裏面,這就是你得到異常的原因。 – Romasz

+0

@Romasz是的,就是這樣。但是,當我刪除DataTemplate時,出現錯誤,說ItemTemplate不支持類型Grid。你知道一種方法來創建一個從VisualStateManager可見的ItemTemplate嗎? – alminh

+2

您是否嘗試將視覺狀態管理器放在數據模板內部的網格下? – Romasz

回答

4

這是一個名稱範圍的問題,對於所有XAML UI框架都是通用的。您的VSM的名稱範圍爲UserControlPageTextBlockDataTemplate

Romasz解決您的問題將VSM放入DataTemplate之內將您需要的所有東西放在單一名稱範圍內,是解決此問題的最佳解決方案。

相關問題