Привязка элемента шаблона данных к свойству подкласса - PullRequest
1 голос
/ 26 мая 2010

У меня есть класс, для эксперимента, назовите его foo (), а другой класс, назовите его bar ()
У меня есть шаблон данных для класса foo (), определенный в моем xaml, но одним из свойств foo () является объект bar () такой, что

foo()
{
    Public string Name {get; set;}
    Public int ID {get; set;}
    Public bar barProp {get; set;}
}

и

bar()
{
    Public string Description{get; set;}
}

Я хочу, чтобы мой шаблон данных foo отображал свойство Description панели. Я пробовал простые <textblock Text="{Binding Path=barProp.Description}" /> и варианты безрезультатно

В поисках мудрости,
DJ

EDIT: В соответствии с запросами на дополнительную информацию ...
вот мои настоящие занятия ...

public class AccountRecord
{
    public string Value { get; set; }
    public string Identifier { get; set; }
    public Field AccountNumber;
}
public class Field
{
    public string Name{get;set;}
    public string Value{get;set}
}

и вот XAML, используемый для их шаблонирования ...

<ListBox Margin="0,35,0,0" Name="listAccountRecords" Background="Transparent" BorderBrush="Transparent" ItemsSource="{Binding AccountRecords, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type Window}}}">
    <ListBox.ItemTemplate>
            <DataTemplate DataType="{x:Type lib:AccountRecord}">
                <Expander Header="{Binding AccountNumber.Name}">                               
                    <ListView ItemsSource="{Binding Fields}" ItemTemplate="{DynamicResource FieldTemplate}">
                    </ListView>
                </Expander>
            </DataTemplate>
    </ListBox.ItemTemplate>
</ListBox>

И точная проблема заключается в том, что значение AccountNumber.Name не отображается в заголовке расширителя для элемента AccountRecord

Ответы [ 2 ]

7 голосов
/ 26 мая 2010

Ваш элемент "AccountNumber" (типа "Поле") является только полем, а не свойством. Вы можете привязать только к свойствам. Дайте ему геттер и сеттер, и он начнет работать.

0 голосов
/ 26 мая 2010

Попробуйте

<textblock Text="{Binding Path=FooObjectName.barProp.Description}" />

Надеюсь, это сработает .. Удачи!

...