2017-04-26 1 views
0

Windows 범용 응용 프로그램에서 피벗을 DataContext에 바인딩하려고합니다. 바인딩 및 "정적"PivotItems를 섞을 수 없다는 점을 제외하면 모든 것이 잘 작동합니다. 목록 및 정적 PivotItem 포함 설정을 기반으로 0 ~ n 개의 PivotItem을 만들어야합니다.Windows 범용 응용 프로그램 피벗 바인딩 및 하나의 정적 피벗 항목

이것은 내가 시도한 것입니다. HeaderTemplate 및 ItemTemplate 요소를 제거하면 PivotItem-Element가 표시됩니다. 거기에 템플릿 요소를 놓으면 여분의 PivotItem이 아니라 바인딩 된 데이터가 표시됩니다.

혼합 할 수도 있습니까?

<Pivot Name="PivotMain" Title="Title" ItemsSource="{Binding Path=Parts}"> 
      <Pivot.HeaderTemplate> 
       <DataTemplate x:DataType="viewmodel:DetailModel"> 
        <TextBlock Text="{Binding Name}"/> 
       </DataTemplate> 
      </Pivot.HeaderTemplate> 
      <Pivot.ItemTemplate> 
       <DataTemplate x:DataType="viewmodel:DetailModel"> 
        <TextBlock Text="TestTest"/> 
       </DataTemplate> 
      </Pivot.ItemTemplate> 
      <PivotItem Name="Settings" Header="Settings"> 
       <ScrollViewer VerticalScrollMode="Auto" VerticalScrollBarVisibility="Auto"> 
        <ListView ItemsSource="{Binding Path=Settings}"> 
         <ListView.ItemTemplate> 
          <DataTemplate x:DataType="viewmodel:SettingModel"> 
           <RelativePanel> 
            <ToggleSwitch Name="OnOff" 
                OffContent="{Binding OffContent}" OnContent="{Binding OnContent}" IsOn="{Binding IsMonitored, Mode=TwoWay}" 
                RelativePanel.AlignLeftWithPanel="True" /> 
           </RelativePanel> 
          </DataTemplate> 
         </ListView.ItemTemplate> 
        </ListView> 
       </ScrollViewer> 
      </PivotItem> 
     </Pivot> 

답변

0

혼합도 가능합니까?

내가 아는 한 불가능합니다. 그러나 다른 방법을 사용하여 요구 사항을 충족시킬 수 있습니다. 실제로하고 싶은 것은 PivotItem 첫 번째 콘텐츠는 다른 콘텐츠와 다릅니다. Data​Template​Selector을 사용하여 다른 항목과 첫 번째 항목 (헤더가 설정 임)에 대해 다른 DataTemplate을 선택할 수 있어야합니다. 예를 들어, 다음 코드는 다음과 같이 당신은 갈 길을 인도 표준시 권리 DataTemplateSelector 있습니다

public sealed partial class MainPage : Page 
{ 
    ObservableCollection<DetailModel> Parts; 
    ObservableCollection<SettingModel> Settingss; 
    public MainPage() 
    { 
     this.InitializeComponent(); 
     Settingss = new ObservableCollection<SettingModel>() 
     { 
      new SettingModel() 
      { 
       IsMonitored=true, 
       OffContent="work at", 
       OnContent="content" 
      } 
     }; 
     Parts = new ObservableCollection<DetailModel>() 
     { 
      new DetailModel() 
      { 
       Name="Settings", 
       Settingss=Settingss 
      }, 
      new DetailModel() 
      { 
       Name="test1" 
      }, 
      new DetailModel() 
      { 
       Name="test2" 
      } 
     }; 

     datasources datasource = new datasources() 
     { 
      Parts = Parts 
     }; 
     this.DataContext = datasource; 
    } 
} 
public class PivotTemplateSelector : DataTemplateSelector 
{ 
    public DataTemplate itemstemplate { get; set; } 
    public DataTemplate settingtemplate { get; set; } 

    protected override DataTemplate SelectTemplateCore(object item) 
    { 
     DetailModel itemget = item as DetailModel; 
     if (itemget.Name == "Settings") 
     { 
      return settingtemplate; 
     } 
     else 
      return itemstemplate; 

     return base.SelectTemplateCore(item); 
    } 

    protected override DataTemplate SelectTemplateCore(object item, DependencyObject container) 
    { 
     return SelectTemplateCore(item); 
    } 
} 
public class datasources 
{ 
    public ObservableCollection<DetailModel> Parts { get; set; } 
} 

public class DetailModel 
{ 
    public string Name { get; set; } 

    public ObservableCollection<SettingModel> Settingss { get; set; } 
} 

public class SettingModel 
{ 
    public string OffContent { get; set; } 
    public string OnContent { get; set; } 
    public bool IsMonitored { get; set; } 
} 
+0

뒤에

<Page.Resources> <DataTemplate x:Key="itemstemplate" x:DataType="local:DetailModel"> <TextBlock Text="TestTest"/> </DataTemplate> <DataTemplate x:Key="settingtemplate" x:DataType="local:DetailModel"> <ScrollViewer VerticalScrollMode="Auto" VerticalScrollBarVisibility="Auto"> <ListView ItemsSource="{Binding Path=Settingss}"> <ListView.ItemTemplate> <DataTemplate x:DataType="local:SettingModel"> <RelativePanel> <ToggleSwitch Name="OnOff" OffContent="{Binding OffContent}" OnContent="{Binding OnContent}" IsOn="{Binding IsMonitored, Mode=TwoWay}" RelativePanel.AlignLeftWithPanel="True" /> </RelativePanel> </DataTemplate> </ListView.ItemTemplate> </ListView> </ScrollViewer> </DataTemplate> <local:PivotTemplateSelector itemstemplate="{StaticResource itemstemplate}" settingtemplate="{StaticResource settingtemplate}" x:Key="PivotTemplateSelector" /> </Page.Resources> <Grid Background="{ThemeResource ApplicationPageBackgroundThemeBrush}"> <Pivot Name="PivotMain" Title="Title" ItemsSource="{Binding Path=Parts}" ItemTemplateSelector="{StaticResource PivotTemplateSelector}"> <Pivot.HeaderTemplate> <DataTemplate x:DataType="local:DetailModel"> <TextBlock Text="{Binding Name}"/> </DataTemplate> </Pivot.HeaderTemplate> </Pivot> </Grid> 

코드

XAML. –