Любая помощь в этом действительно приветствуется.Итак, я пытаюсь привязать данные к свойствам пользовательского класса, созданного в xaml, который затем формирует содержимое шаблонного listboxitem (фу!).
У меня есть простой класс c # с именем MenuItem.У него есть два свойства: - Заголовок - Значок
Концентрирование только на одном из этих пунктов меню (т. Е. Чтобы дать простой пример того, где я застрял). Если я делаю это (с жестко заданными значениями), он работает нормально.:
<ListBox>
<ListBoxItem ContentTemplate="{StaticResource MenuItemTemplate}">
<myclasses:MenuItem Heading="News" IconImage="News.png"/>
</ListBoxItem>
</Listbox>
Где MenuItemTemplate - это соответствующий DataTemplate в разделе ресурсов, привязывающий каждое свойство), содержащий строки, такие как:
<TextBlock x:Name="tbHeading" Text="{Binding Heading}">
Wheareas, когда я пытаюсь использовать привязку для установки свойства Headingон падает (ошибка AG_E_PARSER_BAD_PROPERTY_VALUE) - например:
<ListBox>
<ListBoxItem ContentTemplate="{StaticResource MenuItemTemplate}">
<myclasses:MenuItem Heading="{Binding NewsHeading, Mode=OneWay}" Icon="News.png"/>
</ListBoxItem>
<Listbox>
Мне было интересно, если это происходит, потому что я делаю какое-то двойное связывание (то есть шаблон связывается со значением в классе MenuItem, которыйдолжен быть связан) и это не возможно?Я попытался объявить свойства как свойства зависимостей, но без разницы (хотя я узнал о них только сегодня, так что я могу что-то упустить).
Я знаю, что мог бы установить объекты меню в модели представления,и связать оттуда, но я хотел бы понять, почему выше не работает (так как для моих целей есть преимущества в создании пунктов меню в xaml).
Спасибо !!!!Йен
спасибо за то, что придерживались этого.Я согласен, что список может не понадобиться, но даже если я уменьшу его до одного элемента в contentcontrol:
<ContentControl ContentTemplate="{StaticResource MenuItemTemplate}">
<myclasses:MenuItem Heading="{Binding NewsHeading, Mode=OneWay}" IconImage="News.png"/>
</ContentControl>
У меня все еще остается та же проблема - то, что я могу получить привязку данных для работы внутрисодержимое contentcontrol (до того, как оно будет представлено табличкой данных, указанной в ContentTemplate) с использованием чисто xaml.
Т.е. вышеуказанный бит xaml не работает - он выдает ошибку на бит, который связывает NewsHeading:
Heading="{Binding NewsHeading, Mode=OneWay}
Поэтому я пытаюсь понять, невозможно или нет то, что я делаю, но я делаю это неправильно.
Спасибо.