Привязать текстовые поля к списку <> [i] - PullRequest
0 голосов
/ 16 июня 2020

Мой объект выглядит следующим образом:

public class Macro : INotifyPropertyChanged
    {
        public event PropertyChangedEventHandler PropertyChanged;

        public void NotifyPropertyChanged(string propName)
        {
            if (this.PropertyChanged != null)
                this.PropertyChanged(this, new PropertyChangedEventArgs(propName));
        }
        private string name = "";
        public string Name
        {
            get { return this.name; }
            set
            {
                this.name = value;
                this.NotifyPropertyChanged("Name");
            }
        }
        private ObservableCollection<int> listParams = new ObservableCollection<int>();
        public ObservableCollection<int> ListParams
        {
            get { return this.listParams; }
            set
            {
                this.listParams = value;
                this.NotifyPropertyChanged("ListParams");
            }
        }

        public Macro()
        {

        }
        public Macro(string nom)
        {
            this.Name = nom;
        }

    }

в моем XAML, я хотел бы создать список TextBoxes привязки к ListParams [0], ListParams [1] ... ListParams [ 20]. Можно ли сделать такую ​​привязку? До сих пор я создал 20 «параметров» (int p0, int p1, int p2 ...), но я думаю о том, как упростить свой объект.

1 Ответ

1 голос
/ 16 июня 2020

Вы можете создать ItemsControl, который привязывается к ListParams, и поместить TextBox в ItemTemplate:

<ItemsControl ItemsSource="{Binding ListParams}">
    <ItemsControl.ItemTemplate>
        <DataTemplate>
            <TextBox Text="{Binding Path=., Mode=OneWay}" />
        </DataTemplate>
    </ItemsControl.ItemTemplate>
</ItemsControl>

Поскольку int является неизменяемым, вы не будете однако можно изменить его с помощью TextBox. Если вы этого хотите, вам следует изменить тип исходной коллекции с ObservableCollection<int> на ObservableCollection<YourClass>, где YourClass - это класс со свойством int, которое вы затем привязываете к:

<TextBox Text="{Binding Path=IntPropertyOfYourClass}" />
...