none
Найти объект созданный из кода RRS feed

  • Вопрос

  • WPF C#

    Добрый день

    Найти объект который именован в XAML получается так:

    TextBlock _tx = GRDBasic.Children.OfType<TextBlock >().FirstOrDefault(a => a.Name == "TXTBL1");

    А как быть если все объекты и Grid и TextBlock создаются из кода? Имена в таком случае нельзя написать.

    2 ноября 2015 г. 7:19

Ответы

  • Children это коллекция. Никто не мешает пройти по ней циклом. Приводите элемент коллекции к нужному типу и смотрите на Name. Код не могу написать, та как пишу на VB.Net, но данная задача решается элементарно.

    VB.Net - WPF, UWP

    • Помечено в качестве ответа DevingAs 3 ноября 2015 г. 18:01
    3 ноября 2015 г. 11:52
    Отвечающий
  • попробую загнать все объекты грида в массив и там искать
    • Помечено в качестве ответа DevingAs 3 ноября 2015 г. 18:01
    3 ноября 2015 г. 11:27

Все ответы

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

    если вы их сами создаёте, то зачем их искать?

    2 ноября 2015 г. 7:30
  • Если в Grid создал TextBlock как его потом удалить из события нажатия кнопки?
    2 ноября 2015 г. 8:35
  • А зачем создавать, чтоб потом удалять, может имели ввиду скрыть объект TextBlock?
    2 ноября 2015 г. 19:02
  • У всех объектов есть свойство Tag. Его обычно и используют для таких случаев, да и не только для таких. Это свойство заполняется программистом как ему вздумается и для чего потребуется...
    3 ноября 2015 г. 7:07
  • Можно пожалуйста подробней?

    Grid _grd = new Grid(); _grd.Name="GRDF"; TextBlock _tx = new TexBlock(); _tx.Name="TX1"; _tx.Tag = _grd; // допустим я сюда внесу даже родительский объект

    _grd.Children.Add(_tx);

    TextBlock _tx2 = new TexBlock(); _tx2.Name="TX2"; _tx2.Tag = _grd; _grd.Children.Add(_tx2); Button _btn = new Button(); _btn.Click+=_btn_Click; _grd.Children.Add(_btn); void _btn_Click() { ... Как найти в Grid и удалить из Grid TextBlock TX2 }


    3 ноября 2015 г. 11:22
  • попробую загнать все объекты грида в массив и там искать
    • Помечено в качестве ответа DevingAs 3 ноября 2015 г. 18:01
    3 ноября 2015 г. 11:27
  • Children это коллекция. Никто не мешает пройти по ней циклом. Приводите элемент коллекции к нужному типу и смотрите на Name. Код не могу написать, та как пишу на VB.Net, но данная задача решается элементарно.

    VB.Net - WPF, UWP

    • Помечено в качестве ответа DevingAs 3 ноября 2015 г. 18:01
    3 ноября 2015 г. 11:52
    Отвечающий
  • И в очередной раз призываю перестать писать на WPF так как будто это WinForms. В большинстве случаев не нужно ничего удалять. Если в какой то момент элемент не нужен в интерфейсе, то его можно скрыть, установив Visibility в Collapsed. В идеале делать это через привязку.

    Например: по нажатию на кнопку в классе данных некому свойству присваивается некое значение, а свойство Visibility привязывается к этому свойству и в зависимости от значения переключается и Collapsed в Visible или наоборот.


    VB.Net - WPF, UWP

    3 ноября 2015 г. 11:56
    Отвечающий