Возможна ли привязка переменной к элементу коллекции - PullRequest
5 голосов
/ 30 ноября 2009

Я пытаюсь привязать элемент к коллекции, но индекс для этого элемента должен быть «переменным». Возьмите следующий псевдосинтаксис, например:

<TextBlock Text="{Binding Fields[{Binding Pos}]}" />

Возможно ли что-то подобное? Если мое свойство Pos равно 1, оно должно привязываться к первому элементу из коллекции «Поля», а если мое Pos равно 3, оно должно привязываться к третьему элементу в коллекции. Я упростил мою проблему до этой ситуации ...

Это как то выполнимо и как?

Ответы [ 3 ]

5 голосов
/ 02 декабря 2009

Да, это возможно. Вы должны реализовать конвертер связывания, который преобразует коллекцию в элемент коллекции и принимает индекс в качестве параметра конвертера. Тогда вы будете использовать это так:

<TextBlock Text="{Binding Fields, 
                  Converter={StaticResource CollectionToItemConverter,
                  ConverterParameter={Binding Pos}}}" />

Если вам нужен код для этого конвертера или дополнительная информация о конвертерах, пожалуйста, оставьте комментарий.

Надеюсь, это поможет.

1 голос
/ 06 декабря 2009

попробуйте прочитать на ICollectionView ... это может помочь вам, потому что он может автоматически дать индекс элемента, чтобы ограничить ваш текст.

0 голосов
/ 30 ноября 2009

почему бы вам не использовать свойство, которое возвращает текущий элемент в коллекции и привязывать его к вашему элементу управления WPF?

, таких как:

class myCollection
{

    private string _current;

    public string CurrrentField
    {
         get { return _current; }
    }

    // TODO: Set current item to whatever the current item is...
}

EDIT:

В этом случае, я думаю, вам нужно создать вспомогательный класс, который отслеживает ваши столбцы в вашей сетке данных и затем выравнивается с элементами в вашей коллекции, чтобы свойство, связанное с вашим пользовательским интерфейсом, получало обновления правильно.

Сначала заполните коллекцию, затем вы знаете, сколько у вас в ней элементов, затем с помощью вспомогательного класса переберите коллекцию и назначьте элементы свойству, затем перейдите к следующему столбцу в вашей сетке и т. Д. ...

Я думаю, что все сводится к написанию алгоритма для него самостоятельно.

...