@bagos

Как получить доступ к динамически созданным c помощью datatemplate объектам в xaml?

Класс ReportParameter
public class ReportParameter
    {
        public string ColumnName { get; set; }
        public string ParameterType { get; set; }
    }


В ParameterList в цикле добавляется
ParameterList.Add(new ReportParameter() { ColumnName = param.ColumnName,  ParameterValue = param.ParamValue });


в xaml listview с datatemplate
<ListView ItemsSource="{Binding ParameterList}">
            <ListView.Resources>
                <DataTemplate DataType="{x:Type generic:ReportParameter}">
                    <StackPanel>
                        <Label Content="{Binding Path=ColumnName}" />
                        <TextBox Text="{Binding Path=ParameterValue}" />
                    </StackPanel>
                </DataTemplate>
            </ListView.Resources>
        </ListView>


При загрузке окна рисуются textbox'ы.
Предполагается что данные в этих textbox будут меняться и передаваться дальше. Как мне получить доступ к каждому из textbox'a если они созданы динамически?

В случае сод статическими свойствами делал так
private string _propety;
        public string Property
        {
            get { return _propety; }
            set
            {
                if (value == _propety) return;
                _propety = value;
                OnPropertyChanged("Property");
            }
        }
  • Вопрос задан
  • 262 просмотра
Решения вопроса 1
lam0x86
@lam0x86
Не надо получать доступ к TextBox-ам, это нарушает принцип MVVM (хотя и возможно через хаки типа обхода визуального дерева). К тому же, при режиме
VirtualizingStackPanel.VirtualizationMode="Recycling"
(который используется по умолчанию) не всем элементам массива ParameterList будут соответствовать TextBox-ы.

Предполагается что данные в этих textbox будут меняться и передаваться дальше.

Вот тут не понял. Что значит передаваться дальше?
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы