2012-02-13 17 views
0
**<controls:PanoramaItem Header="first item"> 
      <!--Double line list with text wrapping--> 
      <ListBox Margin="0,0,-12,0" ItemsSource="{Binding Items}"> 
       <ListBox.ItemTemplate> 
        <DataTemplate> 
         <StackPanel Margin="0,0,0,17" Width="432" Height="150"> 
          <StackPanel Orientation="Horizontal"> 
           <TextBlock x:Name="Name" Text="Name: " TextWrapping="Wrap" Style="{StaticResource PhoneTextExtraLargeStyle}"/> 
           <TextBlock Text="{Binding LineOne}" TextWrapping="Wrap" Style="{StaticResource PhoneTextExtraLargeStyle}" Margin="5,0,0,0"/> 
          </StackPanel> 
          <TextBlock Text="{Binding LineTwo}" TextWrapping="Wrap" Margin="12,-6,12,0" Style="{StaticResource PhoneTextSubtleStyle}"/> 
          <TextBlock Text="{Binding LineThree}" TextWrapping="Wrap" Margin="12,-6,12,0" Style="{StaticResource PhoneTextSubtleStyle}"/> 
          <TextBlock Text="{Binding LineFour}" TextWrapping="Wrap" Margin="12,-6,12,0" Style="{StaticResource PhoneTextSubtleStyle}"/> 
         </StackPanel> 
        </DataTemplate> 
       </ListBox.ItemTemplate> 



      </ListBox> 
     </controls:PanoramaItem>** 

これは.xmalの部分です。私はこれをC#でやらなければならない。 CreateItemTemplateを実装する場合C#でPanoramaItemコントロールを動的に作成する方法は?

答えて

4
ListBox listBox = new ListBox(); 
listBox.Margin = new Thickness(0, 0, -12, 0); 
listBox.SetBinding(ListBox.ItemsSourceProperty, new Binding("Items")) 

CreateItemTemplate(listBox); 

PanoramaItem pi = new PanoramaItem(); 
pi.Header = "first item"; 
pi.Content = listBox; 

次の2つの選択肢があり、いずれかのプログラムでDataTemplateを作成したり、リソースとしてResourceDictionaryでそれを作成し、そのリソースを使用します。後者ははるかに簡単かつ最良の方法です。あなたはこの

public void CreateItemTemplate(ListBox listBox) 
{ 
    object myDataTemplate = FindResource("myDataTemplateResource"); // This only works if the resource is available in the scope of your control. E.g. is defined in MyControl.Resources 
    listBox.SetResourceReference(ListBox.ItemTemplateProperty, myDataTemplate); 
} 
のようなものができるリソースを使用するには How to define a DataTemplate in code?

を参照してくださいプログラム的にそれを行うには

関連する問題