2012-01-10 2 views
0

C#으로옵니다 DataTemplate을 작성하고, 나는 그것이나는 일반적인 뷰를 만들려고하고

내가 XAML을 통해 순수 C# 코드 또는 가능하면 부하를 사용하여 하나를 만들 DataTemplate이와리스트 박스를 포함 할? 템플릿을 만들 수 있다면 C#을 사용하여 일종의 리소스로 사용할 수 있습니다. 내가 지금까지 만든 어떤

 private static ListBox CreateDayListBox() 
    { 
     var listBox = new ListBox(); 
     var dataTemplate = new DataTemplate(); 

     var grid = new Grid(); 
     var columnDefinition1 = new ColumnDefinition {Width = GridLength.Auto}; 
     var columnDefinition2 = new ColumnDefinition(); 

     grid.ColumnDefinitions.Add(columnDefinition1); 
     grid.ColumnDefinitions.Add(columnDefinition2); 

     var rectangleItemBought = new Rectangle {Width = 50, Height = 50}; 
     rectangleItemBought.SetBinding(Rectangle.FillProperty, new Binding("Bought")); 
     grid.Children.Add(rectangleItemBought); 

     var textBlockItemName = new TextBlock(); 
     textBlockItemName.SetBinding(TextBlock.TextProperty, new Binding("Name")); 
     var textBlockItemQuantity = new TextBlock(); 
     textBlockItemQuantity.SetBinding(TextBlock.TextProperty, new Binding("Quantity")); 
     var textBlockItemQuantityType = new TextBlock(); 
     textBlockItemQuantityType.SetBinding(TextBlock.TextProperty, new Binding("QuantityType")); 

     var stackpanel = new StackPanel(); 
     Grid.SetColumn(stackpanel, 1); 
     stackpanel.Children.Add(textBlockItemName); 
     stackpanel.Children.Add(textBlockItemQuantity); 
     stackpanel.Children.Add(textBlockItemQuantityType); 
     grid.Children.Add(stackpanel); 

     return listBox; 
    } 

그래서 나는이 목록 상자 DataTemplate을 1 직사각형,

답변

1

내부 3 텍스트 상자에 1 StackPanel의 그런 다음 XAML에서 템플릿을 쓰기에로드 할 수 있습니다를 포함 할 것입니다 당신의 코드.

this을 읽으십시오.

게다가, 난 당신이 코드는 컨트롤을 만들어 같은 방법을 DataTemplate을을 만들이 코드 (credit)를 볼 수 있습니다 확신 해요 :

DataTemplate template = new DataTemplate(); 
FrameworkElementFactory factory = 
    new FrameworkElementFactory(typeof(StackPanel)); 
template.VisualTree = factory; 
FrameworkElementFactory childFactory = 
    new FrameworkElementFactory(typeof(Image)); 
childFactory.SetBinding(Image.SourceProperty, new Binding("Machine.Thumbnail")); 
childFactory.SetValue(Image.WidthProperty, 170.0);  
childFactory.SetValue(Image.HeightProperty, 170.0); 
factory.AppendChild(childFactory); 
childFactory = new FrameworkElementFactory(typeof(Label)); 
childFactory.SetBinding(Label.ContentProperty, 
    new Binding("Machine.Descriiption")); 
childFactory.SetValue(Label.WidthProperty, 170.0); 
childFactory.SetValue(Label.HorizontalAlignmentProperty, 
    HorizontalAlignment.Center); 
factory.AppendChild(childFactory); 
+0

가 작동해야하지만이 방법은 작업을 해달라고 볼 수 있습니다 WP7에서 (나는 언급하지 않았다. didnt는 그것이 중요 할 것이다라는 것을 알고 있었다) – Mech0z

+0

어느 쪽의 방법? 위의 코드는 pseudu ... WP7 (결코 사용하지 않음)에서 XAML 파싱을 제공합니다. – Shimmy

관련 문제