Можете ли вы получить доступ к свойству Dictionary для объекта, который находится в ObservableCollection в WPF XAML? - PullRequest
0 голосов
/ 27 сентября 2018

У меня есть View с ItemsControl, который содержит Grid.ItemsControl привязан к ObservableCollection.
Каждая вещь имеет следующие свойства: Имя (строка), Значение (строка), LocationDictionary (tabid (строка), Местоположение)

Каждое расположение имеет следующие свойства:Col (int), Row (int), TabId (строка), IsVisible (bool)

Представление находится на вкладке пользовательского элемента управления WPF.

  1. Является ли этовозможно ли в XAML использовать Словарь на Thing, чтобы определить строку и столбец для размещения Thing в установщике ItemsControl.ItemContainerStyle?

    <ItemsControl.ItemContainerStyle>
    <Style>
        <Setter Property="Grid.Row" Value={Binding Path=LocationsDictionary[thisTabId].Row}" />
        <Setter Property="Grid.Column" Value={Binding Path=LocationsDictionary[thisTabId].Col}" />
    </Style>
    

  2. Может ли переменная thisTabIdбыть установленным на уровне представления и использоваться в Binding Path в ItemsControl?

Цель в том, чтобы иметь возможность размещать вещи в сетке, они могут существовать только один раз, но могутсуществуют на других вкладках с таким же видом.У меня есть вещи, работающие для одной сетки с Row и Col на Thing, но при применении ко второй сетке, вещи оказываются в одном и том же месте на каждой сетке / вкладке.Thing 2 попадает в одну и ту же ячейку ячейки сетки на каждой вкладке.

Словарь - это один из способов, с помощью которого мы создали Thing для нескольких атрибутов местоположения, чтобы он мог существовать на нескольких вкладках в разных местах.

1 Ответ

0 голосов
/ 27 сентября 2018

Вы не можете сделать что-то подобное в чистом XAML, если thisTabId не является константой:

{Binding Path=LocationsDictionary[thisTabId].Row}

Другими словами, thisTabId не может быть динамическим значением, которое изменяется для каждого элемента вItemsControl.Если вы хотите этого, вы можете использовать многозначный преобразователь , который связывается как со свойством LocationsDictionary, так и со свойством thisTabId и возвращает LocationsDictionary[thisTabId].Row или LocationsDictionary[thisTabId].Column.

...