Guest User

DataTemplate

a guest
Jul 27th, 2022
35
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 4.24 KB | None | 0 0
  1. // Selector.idl
  2.  
  3. import "Selector.idl";
  4.  
  5. namespace TemplateTest
  6. {
  7.     [default_interface]
  8.     runtimeclass MainWindow : Microsoft.UI.Xaml.Window
  9.     {
  10.         MainWindow();
  11.         Selector Selector;
  12.     }
  13. }
  14.  
  15. // Selector.h
  16.  
  17. #pragma once
  18. #include "Selector.g.h"
  19.  
  20. namespace winrt::TemplateTest::implementation
  21. {
  22.     struct Selector : SelectorT<Selector>
  23.     {
  24.         Selector() = default;
  25.  
  26.         Windows::UI::Xaml::DataTemplate SelectTemplateCore(IInspectable const& item, Windows::UI::Xaml::DependencyObject const&             container);
  27.         Windows::UI::Xaml::DataTemplate SelectTemplateCore(IInspectable const& item);
  28.  
  29.         winrt::Windows::UI::Xaml::DataTemplate firstTemplate();
  30.         void firstTemplate(winrt::Windows::UI::Xaml::DataTemplate const& value);
  31.  
  32.         winrt::Windows::UI::Xaml::DataTemplate secondTemplate();
  33.         void secondTemplate(winrt::Windows::UI::Xaml::DataTemplate const& value);
  34.  
  35.       private:
  36.         Windows::UI::Xaml::DataTemplate mSelector1;
  37.         Windows::UI::Xaml::DataTemplate mSelector2;
  38.     };
  39. }
  40. namespace winrt::TemplateTest::factory_implementation
  41. {
  42.     struct Selector : SelectorT<Selector, implementation::Selector>
  43.     {
  44.     };
  45. }
  46.  
  47. //Selector.cpp
  48.  
  49. #include "pch.h"
  50. #include "Selector.h"
  51. #include "Selector.g.cpp"
  52.  
  53. namespace winrt::TemplateTest::implementation
  54. {
  55.     Windows::UI::Xaml::DataTemplate Selector::SelectTemplateCore(IInspectable const& item, Windows::UI::Xaml::DependencyObject const& container)
  56.     {
  57.       return mSelector1;
  58.     }
  59.  
  60.     Windows::UI::Xaml::DataTemplate Selector::SelectTemplateCore(IInspectable const& item)
  61.     {
  62.       return mSelector1;
  63.     }
  64.  
  65.     winrt::Windows::UI::Xaml::DataTemplate Selector::firstTemplate()
  66.     {
  67.       return this->mSelector1;
  68.     }
  69.  
  70.     void Selector::firstTemplate(winrt::Windows::UI::Xaml::DataTemplate const& value)
  71.     {
  72.       if (mSelector1 != value) {
  73.            mSelector1 = value;
  74.       }
  75.     }
  76.  
  77.     winrt::Windows::UI::Xaml::DataTemplate Selector::secondTemplate()
  78.     {
  79.       return this->mSelector2;
  80.     }
  81.  
  82.     void Selector::secondTemplate(winrt::Windows::UI::Xaml::DataTemplate const& value)
  83.     {
  84.       if (mSelector2 != value) {
  85.         mSelector2 = value;
  86.       }
  87.     }
  88. }
  89.  
  90. //MainWindow.xaml.h
  91.  
  92. #pragma once
  93.  
  94. #include "MainWindow.g.h"
  95. #include "Selector.h"
  96.  
  97. namespace winrt::TemplateTest::implementation
  98. {
  99.   struct MainWindow : MainWindowT<MainWindow>
  100.   {
  101.     MainWindow();
  102.  
  103.     winrt::TemplateTest::Selector Selector();
  104.     void Selector(winrt::TemplateTest::Selector const& value);
  105.  
  106.     private:
  107.         winrt::TemplateTest::Selector mSelector;
  108.    };
  109. }
  110.  
  111. namespace winrt::TemplateTest::factory_implementation
  112. {
  113.     struct MainWindow : MainWindowT<MainWindow, implementation::MainWindow>
  114.     {
  115.     };
  116. }
  117.  
  118. //MainWindow.xaml.cpp
  119.  
  120. namespace winrt::TemplateTest::implementation
  121. {
  122.     MainWindow::MainWindow()
  123.     {
  124.         InitializeComponent();
  125.     }
  126.  
  127.     winrt::TemplateTest::Selector MainWindow::Selector() {
  128.       return mSelector;
  129.     }
  130.  
  131.     void MainWindow::Selector(winrt::TemplateTest::Selector const& value) {
  132.       if (mSelector != value) {
  133.         mSelector = value;
  134.       }
  135.     }
  136. }
  137.  
  138. //XAML:
  139.  
  140. <StackPanel>
  141.  
  142.         <Page>
  143.             <Page.Resources>
  144.  
  145.                 <DataTemplate x:Key="template1" x:DataType="x:Int32">
  146.                     <Button HorizontalAlignment="Stretch" VerticalAlignment="Stretch" Background="{ThemeResource  SystemChromeLowColor}">
  147.                         <TextBlock Text="{x:Bind}" />
  148.                     </Button>
  149.                 </DataTemplate>
  150.  
  151.                 <DataTemplate x:Key="template2" x:DataType="x:Int32">
  152.                     <Button HorizontalAlignment="Stretch" VerticalAlignment="Stretch" Background="{ThemeResource SystemAccentColor}">
  153.                         <TextBlock Text="{x:Bind}" />
  154.                     </Button>
  155.                 </DataTemplate>
  156.  
  157.                 <local:Selector x:Key="mySelector"
  158.                     firstTemplate="{StaticResource template1}"
  159.                     secondTemplate="{StaticResource template2}"/>
  160.  
  161.             </Page.Resources>
  162.         </Page>
  163.  
  164.         <ListView
  165.               ItemTemplateSelector = "{StaticResource mySelector}">
  166.         </ListView>
  167.  
  168.     </StackPanel>
  169.  
  170.  
Advertisement
Add Comment
Please, Sign In to add comment