привязка данных к путанице свойств - PullRequest
0 голосов
/ 14 июня 2010

У меня есть вкладка wpf, контекст данных которой установлен для моего объекта «Продукт».Все элементы управления в этой форме получают свои данные от объекта «Продукт».У меня есть просмотр списка, свойство ItemsSource которого установлено на список в моем объекте Product.DetailsList.Столбцы ListView привязаны к свойствам объекта в Product.DetailsList

До этого момента все работало нормальноТеперь мне нужно привязать некоторые столбцы в моем списке к свойствам в моем объекте datacontext, то есть к «Продукту».Может кто-нибудь сказать мне, как я могу добиться этого?

Ответы [ 2 ]

0 голосов
/ 14 июня 2010

Если я правильно понял ваш вопрос, вы спрашиваете, как связать какое-либо свойство текущего элемента в коллекции. Это делается с помощью косой черты ("/") в пути привязки.

Вот пример из MSDN:

<Button Content="{Binding }" />
<Button Content="{Binding Path=/}" />
<Button Content="{Binding Path=/Description}" />

В приведенном выше примере первая строка привязывается к коллекции, вторая строка привязывается к текущему элементу коллекции, а третья строка привязывается к Description свойству текущего элемента в коллекции.

Пример взят из статьи MSDN: Связывание с коллекциями - ищите Указатели текущего элемента .

0 голосов
/ 14 июня 2010

Мне кажется, не совсем понятно, какова иерархия между вашими элементами управления. DataContext работает следующим образом: наследуется от элемента управления верхнего уровня своим дочерним элементам. В этом случае, если WPF TabItem является родительским элементом управления ListView, ListView будет иметь такой же DataContext, что и TabItem.

Кроме того, если я правильно понял, вы можете сделать это:

       <TabItem>
            <ListView>
                <ListView.View>
                    <GridView>
                        <GridViewColumn DisplayMemberBinding="{Binding RelativeSource={RelativeSource FindAncestor, 
                                        AncestorType={x:Type TabItem}}, Path=DataContext.MyPropInProductObject}">

                        </GridViewColumn>
                    </GridView>
                </ListView.View>
            </ListView>
        </TabItem>

, где интересной частью является Относительный источник, для которого установлено значение FindAncestor, и, поскольку вы знаете, что DataContext установлен для объекта Product, вы можете запросить желаемое свойство.

HTH

...