Создать шаблон данных ListBox в C # - PullRequest
0 голосов
/ 10 января 2012

Я пытаюсь создать универсальное представление и хочу, чтобы оно содержало ListBox с табличкой данных

Я хочу создать его, используя чистый код C # или, если возможно, загрузить его через xaml? Если я могу создать шаблон, я могу получить в 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;
    }

Итак, я хочу, чтобы таблица данных списка содержала 1 прямоугольник, 1 стековую панель с 3 текстовыми полями внутри

1 Ответ

1 голос
/ 10 января 2012

Вы можете написать шаблон в 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);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...