2017-01-29 9 views
2

の後ろにC#コードでバインディング私は後ろの作業XAMLおよびC#のコードを次のようしている。背後のGridView、ItemTemplateに、DataTemplateを

<Grid x:Name="MainGrid" Background="{ThemeResource ApplicationPageBackgroundThemeBrush}"> 
    <GridView ItemsSource="{Binding}"> 
     <GridView.ItemTemplate> 
      <DataTemplate> 
       <Grid Height="100" Width="150"> 
        <Grid.Background> 
         <SolidColorBrush Color="{Binding Color}"/> 
        </Grid.Background> 
        <StackPanel> 
         <StackPanel.Background> 
          <SolidColorBrush Color="{Binding Color}"/> 
         </StackPanel.Background> 
         <TextBlock FontSize="15" Margin="10" Text="{Binding Name}"/> 
        </StackPanel> 
       </Grid> 
      </DataTemplate> 
     </GridView.ItemTemplate> 
    </GridView> 
</Grid> 

CODE:

public MainPage() 
{ 
    this.InitializeComponent(); 
    var _Colors = typeof(Colors) 
     .GetRuntimeProperties() 
     .Select(x => new 
     { 
      Color = (Color)x.GetValue(null), 
      Name = x.Name 
     }); 
    this.DataContext = _Colors; 
} 

をこれが正常に動作します。

しかし、私はすべてのXAMLの部分をC#のコードの背後にしたいと思います。 XAMLでは、MainGridしか存在しません。すべての子要素とバインディングはコードの背後で行う必要があります。私はMainPage_Loadedイベントでこのような何かを試してみました

private void MainPage_Loaded(object sender, RoutedEventArgs e) 
{ 
    try 
    { 
     GridView gridView = new GridView() 
     { 
      ItemTemplate = new DataTemplate 
      { 
       //Don't know what to add here 
      } 
     }; 

     Grid grid = new Grid(); 
     Binding bindingObject = new Binding(); 
     bindingObject.Source = this; 
     grid.SetBinding(Grid.BackgroundProperty, bindingObject); 

     //... 
     // Don't know how to add grid inside gridView in Code. 
     //... 

     MainGrid.Children.Add(gridView); 
    } 
    catch (Exception ex) 
    { 

    } 
} 

答えて

0

私はあなたがそうする本当の正当な理由がない限り、コード内の要素を作成していない、あなたにアドバイスしたいと思いますまず第一に。

アイテムテンプレートがコントロールの工場的なオブジェクトであることにかかわらず(各アイテムの新しいコントロールセットが作成されます)。 FrameworkElementFactoryを使用してサブツリーをモデル化し、そのアイテムテンプレートのVisualTreeプロパティを割り当てます。

+0

申し訳ありませんが、FrameworkElementFactory、VisualTreeは私に混乱しているようです。 –

関連する問題