none
XAML. Binding XML к DataTemplate для рисования графика RRS feed

  • Вопрос

  • Доброго времени суток!

    Прошу помощи, несколько дней не могу сообразить как прибиндить такой фрагмент XML: 

     <Nums Color="Blue" Thick="2" SegmentWidth="20">
                                <Sample Val="130" />
                                <Sample Val="4" />
                                <Sample Val="132" />
                                <Sample Val="10" />
                                <Sample Val="134" />
                                <Sample Val="6" />
                                <Sample Val="6" />
    </Nums>

    в DataTemplate  к Path или Line чтобы получился график

    6 сентября 2013 г. 9:16

Ответы

  • Э... Ну у вас тогда два варианта, первый - признать, что вы даже не смогли решить тестовое задание и не отнимать время у будущего работодателя на собеседование, второе - обмануть его, решив задачу с нашей помощью...

    Если примите решение пойти по второму пути, ну что же, ваше право, первая ссылка которая открылась мне в поисковике, была вот эта. Читайте, но судя по всему, я решил за вас ваше тестовое задание найдя эту статью...

    • Помечено в качестве ответа NikolayChuprov 6 сентября 2013 г. 17:04
    6 сентября 2013 г. 15:09
    Отвечающий

Все ответы

  • Добрый день.

    Я бы разобрал тем или иным способом этот XML и записал бы данные из него в объекты вот такого класса:

    public class Item
    {
        public Brush Brush { get; set; }
    
        public double Width { get; set; }
    
        public double Height { get; set; }
    }

    Я не буду заниматься парсингом, я тестовые данные создам из кода:

    public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();
            Loaded += MainWindow_Loaded;
        }
    
        void MainWindow_Loaded(object sender, RoutedEventArgs e)
        {
            SolidColorBrush blue = new SolidColorBrush(Colors.Blue);
            List<Item> items = new List<Item>();
            items.Add(new Item() { Brush = blue, Width = 20, Height = 130 });
            items.Add(new Item() { Brush = blue, Width = 20, Height = 30 });
            items.Add(new Item() { Brush = blue, Width = 20, Height = 160 });
            items.Add(new Item() { Brush = blue, Width = 20, Height = 70 });
            this.DataContext = items;
        }
    }

    Ну и разметка:

    <ListBox ItemsSource="{Binding}">
        <ListBox.Resources>
            <Style TargetType="ListBoxItem">
                <Setter Property="VerticalAlignment" Value="Bottom" />
            </Style>
        </ListBox.Resources>
        <ListBox.ItemsPanel>
            <ItemsPanelTemplate>
                <StackPanel Orientation="Horizontal" VerticalAlignment="Stretch" />
            </ItemsPanelTemplate>
        </ListBox.ItemsPanel>
        <ListBox.ItemTemplate>
            <DataTemplate>
                <Rectangle Width="{Binding Width}" Height="{Binding Height}" Fill="{Binding Brush}" />
            </DataTemplate>
        </ListBox.ItemTemplate>
    </ListBox>

    Вроде выглядит неплохо:

    6 сентября 2013 г. 13:20
    Отвечающий
  • Спасибо огромное за ответ, но проблема в том что нужно использовать только XAML без code behind.

    На самом деле это часть тестового задания, которое мне дали для допуска на собеседование, однако не смотря на то что я немало работал с XAML здесь совершенно не могу понять как прибиндить XML. Буду очень благодарен, если у Вас появятся идеи...

    • Помечено в качестве ответа NikolayChuprov 6 сентября 2013 г. 17:04
    • Снята пометка об ответе NikolayChuprov 6 сентября 2013 г. 17:04
    6 сентября 2013 г. 13:45
  • Э... Ну у вас тогда два варианта, первый - признать, что вы даже не смогли решить тестовое задание и не отнимать время у будущего работодателя на собеседование, второе - обмануть его, решив задачу с нашей помощью...

    Если примите решение пойти по второму пути, ну что же, ваше право, первая ссылка которая открылась мне в поисковике, была вот эта. Читайте, но судя по всему, я решил за вас ваше тестовое задание найдя эту статью...

    • Помечено в качестве ответа NikolayChuprov 6 сентября 2013 г. 17:04
    6 сентября 2013 г. 15:09
    Отвечающий
  • Слууушайте... поисковиками я пользоваться слава Богу тож умею и что такое binding в wpf представление имею. Проблема в том что в одном из вариантов решения данного задания я пытался использовать multibinding для коллекции Points PolyLineSegment и похоже зациклился на этом варианте. Подумав что у сообщества будут какие то "свежие" мысли я и обратился сюда... 

    И не стоит сразу же высказываться об обмане потенциального работодателя не зная квалификации человека.

    Спасибо за попытку помочь. Помечу ваше высказывание как ответ. Буду разбираться дальше...

    6 сентября 2013 г. 17:04
  • Скажите а  вы разобрались с вопросом?
    19 сентября 2018 г. 8:30