2011-01-21 2 views
-1

Как переопределить контекст данных первого внутреннего стека панелей в ... Так that..I можно отнести свойства в классе AКак переопределить контекст данных в панели стека?

Class A 
    { 

    public B b; 

    } 

    Class B 
    { 
    } 

    <stack panel DataContext = b > 
     <stack panel> 
     // HEre I use properties from class A 
     </stack panel> 
     <stack panel> 
     // HEre I use properties from class B 
     </stack panel> 
     <stack panel> 
     // HEre I use properties from class B 
     </stack panel> 
     <stack panel> 
     // HEre I use properties from class B 
     </stack panel> 
    </stack panel> 

ответ

0

Пара способов в зависимости от того, как классы на самом деле созданы.

  1. Создать свойство ассоциации, которое относится к родительскому классу объекта. Если класс B является дочерним по отношению к классу A, то в классе B может быть свойство, которое ссылается на то, какой объект содержит его. Когда ваш DataContext установлен на вашей верхней панели стека, ваш первый ребенок может иметь что-то вроде DataContext = "{Binding Parent}", где parent - это свойство, которое относится к ClassA.

  2. Просто установите свой DataContext в стеке верхнего уровня на привязку ClassA, оставьте его пустым для первого дочернего элемента и установите его для свойства b для каждой последующей панели стека.

Пожалуйста, дайте мне знать, если я понял ваше право. Мне может понадобиться еще немного информации о вашей программе и проблемах.

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

+0

Что бы вы ни дали в качестве ответа ... Я в порядке с этим (и я уже использую второй метод). Но я хочу лучшее решение, которое я поставил на этот вопрос. Я использую единство ... и в файле xaml я сопоставляю viewmodel для данного представления. И эта модель представления - это класс A. И в классе A у меня есть свойство типа B. Если у меня есть свойство в B, которое имеет тип A, оно решит probem. Но мой вопрос: «У нас есть что-то вроде« этого в файле C# », которое мы можем использовать в XAML? .. так что« это »укажет на текущую модель просмотра. – Relativity

+0

Ах! Я понял. Вы хотите иметь возможность перезвонить из других мест в виде «текущего ViewModel». Единственный механизм, который я видел для этого, - это объект DataContextSpy, созданный Джошем Смитом, который может быть помещен в ресурсы элементов и может сообщать о том, что элементы DataContext для других частей программы. Взгляните на эту ссылку: http://blogs.infragistics.com/blogs/josh_smith/archive/2008/06/26/data-binding-the-isvisible-property-of-contextualtabgroup.aspx – CodeWarrior

3
Class A 
    { 

    // B Should b a property 
    public B B{get; set;}; 

    } 

    Class B 
    { 
    } 

    <!-- Set A's Context here --> 
    <StackPanel DataContext=A> 
     <StackPanel> 
     // HEre you use properties from class A 
     </StackPanel> 

     <StackPanel DataContext={Binding Path=B}> 
     // HEre you use properties from class B 
     </StackPanel> 

     <StackPanel DataContext={Binding Path=B}> 
     // HEre you use properties from class B 
     </StackPanel> 

     <StackPanel DataContext={Binding Path=B}> 
     // HEre you use properties from class B 
     </StackPanel> 
    </StackPanel> 
Смежные вопросы