Форум программистов
 
Расширенный поиск
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

Вернуться   Форум программистов > .NET > WPF, UWP, WinRT, XAML
Регистрация

Восстановить пароль
Повторная активизация e-mail

Ответ
 
Опции темы
Старый 09.06.2016, 13:58   #1
Grindin
Новичок
 
Регистрация: 09.06.2016
Сообщений: 2
Репутация: 10
Лампочка C# WPF Удаление и обновление элементов

Здравствуйте, пишу RSS читалку, которая работает через кнопки. Для вопрос и общей информации покажу код:
Добавление канала:
Код:

 
                XmlReader readxml = XmlReader.Create(textBox.Text);
                SyndicationFeed feed = SyndicationFeed.Load(readxml);

                int Z = Stackpnelleft.Children.Count +1;
                if (Z == 0) { Z++; };

                TextBlock TX = new TextBlock();
                Button ButtonTitle = new Button();
                ContextMenu contextmenu = new ContextMenu();
                MenuItem mi = new MenuItem();
                
                TX.TextWrapping = TextWrapping.Wrap;
                TX.Text = feed.Title.Text;
                TX.TextAlignment = TextAlignment.Center;
                ButtonTitle.Content = TX;

                //ButtonTitle.Uid = "BBB" + Z + "";
                ButtonTitle.Tag = feed;

                ButtonTitle.ContextMenu = contextmenu;
                mi.Header = "Удалить";
                mi.Click += Delete_Channel;

                ButtonTitle.Click += OnFeedClick;

                contextmenu.Items.Add(mi);
                Stackpnelleft.Children.Add(ButtonTitle); // Канал  
                F2.YN = true;

Добавление новостей:
Код:

           Stackpnelmiddle.Children.Clear();
           
            var f = ((SyndicationFeed)((Button)s).Tag);
            foreach (SyndicationItem item in f.Items)
            {
                TextBlock TX1 = new TextBlock();
                Button Buttonitem = new Button();
                TX1.TextWrapping = TextWrapping.Wrap;
                TX1.Text = item.Title.Text;
                TX1.TextAlignment = TextAlignment.Center;
                Buttonitem.Content = TX1;

                Buttonitem.Tag = item;
                // UID
              
                // Buttonitem.ToolTip = " " + q + "";
               
                Buttonitem.Click += OnSyndicationItemClick;
                
                Stackpnelmiddle.Children.Add(Buttonitem);

И открытие новости:

Код:

            SyndicationItem item = ((SyndicationItem)((Button)sender).Tag);

            label2.Content = item.PublishDate.DateTime.ToString(System.Globalization.CultureInfo.InvariantCulture);  
            
            var f = item.Links[0].Uri;
            HttpWebRequest myWebRequest = (HttpWebRequest)WebRequest.Create(f);
            this.WebBrowser.Navigate(f);

Внимание вопрос, как мне удалить только один канал, который фактически является клавишей в stackpanel, через контекстое меню (там есть пункт удалить)

______________________
Используйте тег [CODE] (кнопка с решеткой # в форме сообщения) при вставке кода на форум.

Последний раз редактировалось Alex11223; 09.06.2016 в 14:04.
Grindin вне форума   Ответить с цитированием
Старый 09.06.2016, 14:12   #2
Alex11223
Модератор
Заслуженный модератор
 
Регистрация: 12.01.2011
Сообщений: 13,193
Репутация: 2575

icq: 512-7шесть5
skype: alexp.frl
По умолчанию

В WPF обычно используют биндинги, ItemTemplate и т.п. и MVVM вместо прямого взаимодействия с элементами.

Например коллекция с каналами (из объекта ViewModel) в XAML прибиндена к ItemsSource в ItemsControl/ListBox/DataGrid/.../TabControl/... и в его ItemTemplate указано как отображать эти данные.

http://programmersforum.ru/showthrea...96#post1592396

Последний раз редактировалось Alex11223; 09.06.2016 в 14:16.
Alex11223 на форуме   Ответить с цитированием
Старый 09.06.2016, 14:40   #3
Grindin
Новичок
 
Регистрация: 09.06.2016
Сообщений: 2
Репутация: 10
По умолчанию

Цитата:
Сообщение от Alex11223 Посмотреть сообщение
В WPF обычно используют биндинги, ItemTemplate и т.п. и MVVM вместо прямого взаимодействия с элементами.

Например коллекция с каналами (из объекта ViewModel) в XAML прибиндена к ItemsSource в ItemsControl/ListBox/DataGrid/.../TabControl/... и в его ItemTemplate указано как отображать эти данные.

http://programmersforum.ru/showthrea...96#post1592396
Проблема в то что уже большая часть закончена, поэтому хотелось бы удалять на прямую, но как понять не могу поскольку все объекты внутри StackPanel динамические и не знаю каким образом они выводятся в панель, какое имеют имя и.тд. Тобишь не знаю как найти именно ту кнопку на котором я вызвал контекстное меню.
Grindin вне форума   Ответить с цитированием
Старый 09.06.2016, 16:43   #4
Alex11223
Модератор
Заслуженный модератор
 
Регистрация: 12.01.2011
Сообщений: 13,193
Репутация: 2575

icq: 512-7шесть5
skype: alexp.frl
По умолчанию

Это сложнее, чем биндинг.

Зависит от того как меню реализовано.
Может быть в sender события открытия есть нужный объект?
Ну или куда-то в Tag и т.п. засунуть ссылку на элемент или ID/имя. Кнопки может быть удобно хранить в Dictionary<ид, кнопка> или Dictionary<ид, объект_хранящий_кнопку_и_все_осталь ные_связанные_элементы>.
Alex11223 на форуме   Ответить с цитированием
Ответ



Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
wpf: обновление гуи chugada WPF, UWP, WinRT, XAML 27 03.02.2016 20:44
Обновление таблицы БД SqlLite - C# WPF Notan1310 WPF, UWP, WinRT, XAML 4 08.10.2015 15:34
WPF/ Обновление ItemsSource-а ShoGUN WPF, UWP, WinRT, XAML 0 02.06.2014 18:34
C#, WPF. Привязка элементов listbox к комманде. ABC12 C# (си шарп) 0 10.09.2012 20:41
WPF, удаление файлов. mixa_go WPF, UWP, WinRT, XAML 5 30.08.2011 20:07




01:02.


Powered by vBulletin® Version 3.8.8 Beta 2
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.

купить трафик


как улучшить посещаемость, а также решения по монетизации сайтов, видео и приложений

RusProfile.ru


Справочник российских юридических лиц и организаций.
Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru