Форум программистов, компьютерный форум, киберфорум
C#: WPF, UWP и Silverlight
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/13: Рейтинг темы: голосов - 13, средняя оценка - 5.00
0 / 0 / 0
Регистрация: 28.05.2015
Сообщений: 31
1

XAML документ, вывод строк в компонент ListView

07.06.2015, 19:07. Показов 2340. Ответов 17
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Все Привет, подскажите пожалуйста как создать условие при работе с XAML документом
Есть XАML код, нужно обратиться к тем строкам, у которых: (1- шрифт: 26.6 и больше; 2 - жирный текст )
Если такая строка попалась, вывести в компонент ListView
Помогите кто сможет, или предложите ваш вариант
XML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
<FlowDocument xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation">
  <Paragraph Margin="48,0,0,0" TextAlignment="Justify" FontFamily="Georgia" FontWeight="Bold" FontSize="26.6666666666667">
    <Span Foreground="#FF000000" xml:lang="en-us" xml:space="preserve">V.   Boron</Span>
  </Paragraph>
  <Paragraph Margin="88,0,0,0" TextAlignment="Justify" FontFamily="Georgia" FontSize="16">
    <Span Foreground="#FF000000" xml:lang="en-us" xml:space="preserve">·   </Span>
    <Span Foreground="#FF000000" xml:lang="en-us">Symbol: B</Span>
  </Paragraph>
  <Paragraph Margin="88,0,0,0" TextAlignment="Justify" FontFamily="Georgia" FontSize="16">
    <Span Foreground="#FF000000" xml:lang="en-us" xml:space="preserve">·   </Span>
    <Span Foreground="#FF000000" xml:lang="en-us">Atomic Mass: 10.811</Span>
  </Paragraph>
  <Paragraph Margin="48,0,0,0" TextAlignment="Justify" FontFamily="Georgia" FontWeight="Bold" FontSize="26.6666666666667">
    <Span Foreground="#FF000000" xml:lang="en-us" xml:space="preserve">VI.  Carbon</Span>
  </Paragraph>
  <Paragraph Margin="88,0,0,0" TextAlignment="Justify" FontFamily="Georgia" FontSize="16">
    <Span Foreground="#FF000000" xml:lang="en-us" xml:space="preserve">·   </Span>
    <Span Foreground="#FF000000" xml:lang="en-us">Symbol: C</Span>
  </Paragraph>
  <Paragraph Margin="88,0,0,0" TextAlignment="Justify" FontFamily="Georgia" FontSize="16">
    <Span Foreground="#FF000000" xml:lang="en-us" xml:space="preserve">·   </Span>
    <Span Foreground="#FF000000" xml:lang="en-us">Atomic Mass: 12.0107</Span>
  </Paragraph>
  <Paragraph Margin="48,0,0,0" TextAlignment="Justify" FontFamily="Georgia" FontWeight="Bold" FontSize="26.6666666666667">
    <Span Foreground="#FF000000" xml:lang="en-us" xml:space="preserve">VII. Nitrogen</Span>
  </Paragraph>
  <Paragraph Margin="88,0,0,0" TextAlignment="Justify" FontFamily="Georgia" FontSize="16">
    <Span Foreground="#FF000000" xml:lang="en-us" xml:space="preserve">·   </Span>
    <Span Foreground="#FF000000" xml:lang="en-us">Symbol: N</Span>
  </Paragraph>
  <Paragraph Margin="88,0,0,0" TextAlignment="Justify" FontFamily="Georgia" FontSize="16">
    <Span Foreground="#FF000000" xml:lang="en-us" xml:space="preserve">·   </Span>
    <Span Foreground="#FF000000" xml:lang="en-us">Atomic Mass: 14.00674</Span>
  </Paragraph>
  <Paragraph Margin="48,0,0,0" TextAlignment="Justify" FontFamily="Georgia" FontWeight="Bold" FontSize="26.6666666666667">
    <Span Foreground="#FF000000" xml:lang="en-us" xml:space="preserve">VIII.    Oxygen</Span>
  </Paragraph>
  <Paragraph Margin="88,0,0,0" TextAlignment="Justify" FontFamily="Georgia" FontSize="16">
    <Span Foreground="#FF000000" xml:lang="en-us" xml:space="preserve">·   </Span>
    <Span Foreground="#FF000000" xml:lang="en-us">Symbol: O</Span>
  </Paragraph>
  <Paragraph Margin="88,0,0,0" TextAlignment="Justify" FontFamily="Georgia" FontSize="16">
    <Span Foreground="#FF000000" xml:lang="en-us" xml:space="preserve">·   </Span>
    <Span Foreground="#FF000000" xml:lang="en-us">Atomic Mass: 15.9994</Span>
  </Paragraph>
  <Paragraph Margin="48,0,0,0" TextAlignment="Justify" FontFamily="Georgia" FontWeight="Bold" FontSize="26.6666666666667">
    <Span Foreground="#FF000000" xml:lang="en-us" xml:space="preserve">IX.  Fluorine</Span>
  </Paragraph>
  <Paragraph Margin="88,0,0,0" TextAlignment="Justify" FontFamily="Georgia" FontSize="16">
    <Span Foreground="#FF000000" xml:lang="en-us" xml:space="preserve">·   </Span>
    <Span Foreground="#FF000000" xml:lang="en-us">Symbol: F</Span>
  </Paragraph>
  <Paragraph Margin="88,0,0,0" TextAlignment="Justify" FontFamily="Georgia" FontSize="16">
    <Span Foreground="#FF000000" xml:lang="en-us" xml:space="preserve">·   </Span>
    <Span Foreground="#FF000000" xml:lang="en-us">Atomic Mass: 18.9984032</Span>
  </Paragraph>
  <Paragraph Margin="48,0,0,0" TextAlignment="Justify" FontFamily="Georgia" FontWeight="Bold" FontSize="26.6666666666667">
    <Span Foreground="#FF000000" xml:lang="en-us" xml:space="preserve">X.   Neon</Span>
  </Paragraph>
  <Paragraph Margin="88,0,0,0" TextAlignment="Justify" FontFamily="Georgia" FontSize="16">
    <Span Foreground="#FF000000" xml:lang="en-us" xml:space="preserve">·   </Span>
    <Span Foreground="#FF000000" xml:lang="en-us">Symbol: Ne</Span>
  </Paragraph>
  <Paragraph Margin="88,0,0,0" TextAlignment="Justify" FontFamily="Georgia" FontSize="16">
    <Span Foreground="#FF000000" xml:lang="en-us" xml:space="preserve">·   </Span>
    <Span Foreground="#FF000000" xml:lang="en-us">Atomic Mass: 20.1797131</Span>
  </Paragraph>
</FlowDocument>
Добавлено через 10 минут
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.IO;
using System.Linq;
using System.Text;
using System.Windows.Documents;
using System.Windows.Forms;
using System.Windows.Markup;
using System.Xml;
 
if (openFileDialog1.ShowDialog()== System.Windows.Forms.DialogResult.OK)
            {
                var doc = new FlowDocument();
                var range = new TextRange(doc.ContentStart, doc.ContentEnd);
                using(FileStream stream = new FileStream(openFileDialog1.FileName, FileMode.Open))
                {
                    range.Load(stream, DataFormats.Rtf);
                }
                var builder = new StringBuilder();
                using (StringWriter swriter = new StringWriter(builder))
                {
                    var xwriter = new XmlTextWriter(swriter);
                    xwriter.Formatting = Formatting.Indented;
                    XamlWriter.Save(doc, xwriter);               }
                    richTextBox1.Text = builder.ToString();
            }
Он преобразовывает Rtf документ в XAML (это делается все для поиска строк)

Добавлено через 9 минут
Готовый вариант получается такой: Мы открывает какой небуть rtf документ, далее тем временем работает преобразователь rtf в xalm,далее сканируем все строки ищем разницу строк отличающиеся от остальных своими параметрами, 1 - Размер 2 - жирный текст, и заносим в ListView

Добавлено через 11 минут
получается первым делом мы составляем список в listview а потом мы загружаем в RichTextBox сам документ по которому мы делали список
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
07.06.2015, 19:07
Ответы с готовыми решениями:

Вывод количества строк из БД в ListView
Добрый день. Есть такой код. Он выводит все строки в listview. Как сделать чтобы, в listview...

Заполнение ListView из XAML
Здравствуйте, есть такая проблемка, у меня есть класс public class Person { public...

Вставка графических объектов XAML в документ Word
Доброго времени суток. Имеется окно (точнее одна из вкладок TabControl), созданное средствами WPF,...

Как в коде обратиться по имени к списку, определенному в XAML в качестве ItemsSource для ListView?
Простой вопрос. Как в коде обратиться по имени к списку, определенному в XAML в качестве...

17
Эксперт .NET
5534 / 4298 / 1217
Регистрация: 12.10.2013
Сообщений: 12,332
Записей в блоге: 2
07.06.2015, 19:19 2
BinaryDante, я вам вот так отфильтровал что требуется, создав коллекцию из анонимных типов. Можете дальше из них брать что требуется.
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
 
using System.IO;
using System.Xml;
using System.Xml.Linq;
using System.Globalization;
 
namespace ConsoleApplication1 {
    class Program {
        static void Main(string[] args) {
 
            XDocument doc = XDocument.Parse(File.ReadAllText(@"C:\Test.xml"));
            XNamespace nsp = XNamespace.Get(@"http://schemas.microsoft.com/winfx/2006/xaml/presentation");
            var result = doc.Descendants(nsp + "Paragraph")
                .Where(el => double.Parse(el.Attribute("FontSize").Value, NumberFormatInfo.InvariantInfo) >= 26.6 &&
                el.Attribute("FontWeight").Value == "Bold")
                .Select(el => new { FontSize = el.Attribute("FontSize").Value, FontWeight = el.Attribute("FontWeight").Value });
            foreach (var r in result) {
                Console.WriteLine(r);
            }
        }
    }
}
1
0 / 0 / 0
Регистрация: 28.05.2015
Сообщений: 31
07.06.2015, 19:51  [ТС] 3
insite2012, мне для WindowsForm а не для консольных приложений

Добавлено через 27 секунд
Хотя тут значение особого не имеет
0
Эксперт .NET
5534 / 4298 / 1217
Регистрация: 12.10.2013
Сообщений: 12,332
Записей в блоге: 2
07.06.2015, 19:52 4
Цитата Сообщение от BinaryDante Посмотреть сообщение
Хотя тут значение особого не имеет
Именно так. Я показал вам код фильтрации, а где его использовать - ваше дело.
0
0 / 0 / 0
Регистрация: 28.05.2015
Сообщений: 31
07.06.2015, 19:58  [ТС] 5
insite2012, спасибо вам
0
0 / 0 / 0
Регистрация: 28.05.2015
Сообщений: 31
09.06.2015, 03:50  [ТС] 6
insite2012, А можно как небуть сделать, что бы он название самого слова выводил?

Добавлено через 13 минут
insite2012, не именно данные (размер, жирный шрифт), а само найденное слово.
0
Эксперт .NET
5534 / 4298 / 1217
Регистрация: 12.10.2013
Сообщений: 12,332
Записей в блоге: 2
09.06.2015, 05:36 7
Цитата Сообщение от BinaryDante Посмотреть сообщение
а само найденное слово.
В смысле "Paragraph"? Конечно можно.
0
0 / 0 / 0
Регистрация: 28.05.2015
Сообщений: 31
09.06.2015, 13:24  [ТС] 8
insite2012, ну вот допустим
XML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
  <Paragraph TextIndent="47.27" Margin="0,0,0,0" TextAlignment="Justify" FontFamily="Times New Roman" FontSize="18.6666666666667">
    <Span xml:lang="ru-ru">Содержание</Span>
  </Paragraph>
  <Paragraph TextIndent="47.27" Margin="0,0,0,0" TextAlignment="Justify" FontFamily="Times New Roman" FontSize="18.6666666666667" />
  <Paragraph Margin="0,0,0,0" TextAlignment="Justify" FontFamily="Times New Roman" FontSize="18.6666666666667">
    <Span xml:lang="ru-ru">Введение</Span>
  </Paragraph>
  <Paragraph Margin="0,0,0,0" TextAlignment="Justify" FontFamily="Times New Roman" FontSize="18.6666666666667">
    <Span xml:lang="ru-ru">1. Понятие и классификация электронных учебников</Span>
  </Paragraph>
  <Paragraph Margin="0,0,0,0" TextAlignment="Justify" FontFamily="Times New Roman" FontSize="18.6666666666667">
    <Span xml:lang="ru-ru">2. Особенности представления и восприятия информации при самообучении</Span>
  </Paragraph>
  <Paragraph Margin="0,0,0,0" TextAlignment="Justify" FontFamily="Times New Roman" FontSize="18.6666666666667">
    <Span xml:lang="ru-ru">3. Создание электронного учебного пособия по курсу «Современные средства оценивания результатов обучения»</Span>
  </Paragraph>
  <Paragraph Margin="0,0,0,0" TextAlignment="Justify" FontFamily="Times New Roman" FontSize="18.6666666666667">
    <Span xml:lang="ru-ru">Заключение</Span>
  </Paragraph>
  <Paragraph Margin="0,0,0,0" TextAlignment="Justify" FontFamily="Times New Roman" FontSize="18.6666666666667">
    <Span xml:lang="ru-ru">Список использованных источников</Span>
  </Paragraph>
Получается Span

Добавлено через 39 минут
insite2012, Эти слова нужны для того что бы я потом в тексте на них фокус сделал.

Добавлено через 3 минуты
Ну вот как то так у меня, только бы сделать бы чтоб он именно найденный текст выводил
C#
1
RichTextBox rrr = new RichTextBOx();
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
void IntroDocument()
        {
                var doc = new System.Windows.Documents.FlowDocument();
                var range = new System.Windows.Documents.TextRange(doc.ContentStart, doc.ContentEnd);
                using (FileStream stream = new FileStream(openFileDialog1.FileName, FileMode.Open))
                {
                    range.Load(stream, DataFormats.Rtf);
                }
                var builder = new StringBuilder();
                using (StringWriter swriter = new StringWriter(builder))
                {
                    var xwriter = new XmlTextWriter(swriter);
                    xwriter.Formatting = Formatting.Indented;
                    System.Windows.Markup.XamlWriter.Save(doc, xwriter);
                    rrr.Text = builder.ToString();
                }
            
        }
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
        void Seachline()
        {
                TabPage new2 = new TabPage(openFileDialog1.SafeFileName);
                TreeView tv = new TreeView();
                tabControl2.TabPages.Add(new2);
                tv.Dock = DockStyle.Fill;
                new2.Controls.Add(tv);
                tabControl2.SelectedTab = new2;
 
                XDocument doc = XDocument.Parse(rrr.Text);
                XNamespace nsp = XNamespace.Get(@"http://schemas.microsoft.com/winfx/2006/xaml/presentation");
                var result = doc.Descendants(nsp + "Paragraph")
                    .Where(el => double.Parse(el.Attribute("FontSize").Value, NumberFormatInfo.InvariantInfo) >= 18 &&
                    el.Attribute("FontWeight").Value == "Bold")
                    .Select(el => new { FontSize = el.Attribute("FontSize").Value, FontWeight = el.Attribute("FontWeight").Value });
                foreach (var r1 in result)
                {
                    tv.Nodes.Add(r1.ToString());
                }
        }
0
Эксперт .NET
5534 / 4298 / 1217
Регистрация: 12.10.2013
Сообщений: 12,332
Записей в блоге: 2
09.06.2015, 13:31 9
Цитата Сообщение от BinaryDante Посмотреть сообщение
ну вот допустим
BinaryDante, уточните, что именно надо получить из этого документа? По вашему вопросу я не совсем понял.
0
0 / 0 / 0
Регистрация: 28.05.2015
Сообщений: 31
09.06.2015, 14:02  [ТС] 10
insite2012, Нужно найденные слова по параметрам (шрифт, жирный текст) отобразить в TreeView, а у меня записывает xml данные, вот мой скриншот:
XAML документ, вывод строк в компонент ListView

Просто мне потом нужно будет делать поиск этих слов в компоненте RichTextBox. Т.е переход
0
Эксперт .NET
5534 / 4298 / 1217
Регистрация: 12.10.2013
Сообщений: 12,332
Записей в блоге: 2
09.06.2015, 14:09 11
BinaryDante, если я понял вашу задачу, она должна выглядеть так:
1. Слева выводятся все варианты размера и типа шрифтов, которые присутствуют в тексте (по одному варианту для каждого, а не все что есть. То есть, Размер-1б Шрифт-1ж Размер-2б Шрифт-2 и так далее. А потом вам в самом тексте надо искать слова, соответствующие этим параметром (типа как в блокноте, Искать, Искать далее и т.п.).
Все верно я описал?
0
0 / 0 / 0
Регистрация: 28.05.2015
Сообщений: 31
09.06.2015, 19:15  [ТС] 12
insite2012, почти верно, это что то вроде боковой панели отображающие темы, подтемы, т.к угадать для каждого документа свои параметры шрифта итд почти невозможно, я решил сделать свой стандарт отображения текста в боковую панель: шрифт от 18(хотя можно начинать с 19) и более и жирный текст
Он просто выводит от 18 шрифта и больше в компонент TreeView тем самым делая как бы тему, или под тему, главное что бы был переход на такие слова, допустим что в TreeView есть слово с названием подтемой, то в удачном варианте, при нажатии на это слово он в компоненте RichTextBox найдет именно такое слово.
Вроде это все

Добавлено через 4 минуты
Это все делается для электронных документов, книг, учебников где я думаю что не будет просто тупо 18 шрифт, как правило темы или под темы делают шрифтом больше и часто жирным шрифтом, вот я и воспользовался этим моментом

Добавлено через 4 часа 47 минут
insite2012, сможете помочь?
0
Эксперт .NET
5534 / 4298 / 1217
Регистрация: 12.10.2013
Сообщений: 12,332
Записей в блоге: 2
10.06.2015, 17:43 13
Цитата Сообщение от BinaryDante Посмотреть сообщение
сможете помочь?
С чем именно? Вывести все имеющиеся в вашем документе пары Размер-Тип? Это смогу.
Заниматься реализацией поиска слов в тексте? Это вряд ли, поскольку это потребует больше времени, которого у меня не так много.
0
0 / 0 / 0
Регистрация: 28.05.2015
Сообщений: 31
10.06.2015, 17:49  [ТС] 14
insite2012, вот нужно по размеру и типу вывести найденное слово в treeview, а оттуда я через обработчик клика в treeview считаю слово и найду в richtextbox
0
Эксперт .NET
5534 / 4298 / 1217
Регистрация: 12.10.2013
Сообщений: 12,332
Записей в блоге: 2
10.06.2015, 20:04 15
Цитата Сообщение от BinaryDante Посмотреть сообщение
нужно по размеру и типу вывести найденное слово в treeview
Что вывести??? Куда? Вы може четко и ясно сказать, что вам нужно получить именно из вашего xml файла?
Я вот сколько раз ваши посты прочитал, так и не понял до конца, что же вам требуется...
0
0 / 0 / 0
Регистрация: 28.05.2015
Сообщений: 31
10.06.2015, 22:32  [ТС] 16
XAML документ, вывод строк в компонент ListView

insite2012
, смотрите, за место строчки {FontSize = 26.666666666667.FontWeight = Bold} в компоненте TreeView надо вывести само слово V.Boron, в TreeView.
И так дальше, не xml данные о строках а само слово из RichTextBox компонента
0
0 / 0 / 0
Регистрация: 28.05.2015
Сообщений: 31
11.06.2015, 20:11  [ТС] 17
insite2012, Надеюсь вы поняли меня

Добавлено через 21 час 17 минут
insite2012, просто вывести в компонент TreeView те слова у которые при поиске {FontSize = больше 19 и .FontWeight = Bold}, не сам параметр поиска как показано в предыдущем скриншоте а те самые слова начиная с 19 шрифта и жирного текста, я просто не знаю как вам еще объяснить.
Попробую рассказать вам подробно через скриншот:
Итак, я загрузил документ в котором есть несколько строк ( 26 шрифт и жирный текст)
в боковой панели (TreeView) выведено 6 строк xml кода, каждая строчка отвечает а точней говорит информацию строки в RichTextBox (начиная с верху в них), это правильно, так как в загруженном документе в RichTextBox 6 строк которые больше 19 шрифта и выделены жирным текстом, нужно просто вывести не саму информацию строк на xml, а через xml вывести найденное данное слово (смотрите стрелочки на скриншоте)
0
0 / 0 / 0
Регистрация: 28.05.2015
Сообщений: 31
14.06.2015, 19:24  [ТС] 18
Народ если кто знает, помогите пожалуйста, срочно нужно
0
14.06.2015, 19:24
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
14.06.2015, 19:24
Помогаю со студенческими работами здесь

Поиск в listView и вывод на печать как Excel-документ
Помогите, пожалуйста, не знаю как сделать поиск и печать в listView. Печать желательно хотелось бы...

Вывод файлов в компонент ListView
Запуск происходит нормально, вот только в ListView ничего не появляется.unit Unit1; {$mode...

Как проверить CheckBox в ListView XAML?
Добрый день, создал ListView и добавил туда checkBox &lt;Window x:Class=&quot;MainWindow&quot; ...

Как Excel документ, в котором 10000 строк, разбить по 10 строк и сохранить каждые 10 строк в отдельный файл
Здравствуйте. Подскажите как Excel документ в котором 10000 строк разбить по 10 строк и сохранить...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
18
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru