AG_E_PARSER_BAD_PROPERTY_VALUE [Строка: 50 Позиция: 45] - PullRequest
0 голосов
/ 30 апреля 2011

Это мой код ApplicationBar (код, который вызывает ошибку из-за привязки данных)

 <phone:PhoneApplicationPage.ApplicationBar>
        <shell:ApplicationBar IsVisible="True" >
            <shell:ApplicationBarIconButton IconUri="/icons/prevItem.png" x:Name="prevItem"
                                            IsEnabled="{Binding Path=IsPrevTopicButtonEnabled}"
                                            Text="Prev item" Click="prevItem_Click">

            </shell:ApplicationBarIconButton>
            <shell:ApplicationBarIconButton IconUri="/icons/nextItem.png" 
                                            IsEnabled="{Binding Path=IsNextTopicButtonEnabled}"
                                            Text="Next item" x:Name="nextItem" Click="nextItem_Click"/>
            <shell:ApplicationBar.MenuItems>
                <shell:ApplicationBarMenuItem x:Name="mnuPrevItem" Text="{Binding Path=PreviousTopic.Title}"/>
                <shell:ApplicationBarMenuItem x:Name="mnuNextItem" Text="{Binding Path=NextTopic.Title}"/>
            </shell:ApplicationBar.MenuItems>
        </shell:ApplicationBar>
    </phone:PhoneApplicationPage.ApplicationBar>

Это мои свойства в коде: -

public static readonly DependencyProperty PreviousTopicProperty = DependencyProperty.Register("PreviousTopic",
    typeof(Topic), typeof(ArticleViewer), new PropertyMetadata(null));
public Topic PreviousTopic
{
    get { return GetValue(PreviousTopicProperty) as Topic; }
    set
    {

        SetValue(PreviousTopicProperty, value);
    }
}

public static readonly DependencyProperty NextTopicProperty = DependencyProperty.Register("NextTopic",
    typeof(Topic), typeof(ArticleViewer), new PropertyMetadata(null));
public Topic NextTopic
{
    get { return GetValue(NextTopicProperty) as Topic; }
    set
    {

        SetValue(NextTopicProperty, value);
    }
}

public static readonly DependencyProperty IsNextTopicButtonEnabledProperty = DependencyProperty.Register("IsNextTopicButtonEnabled",
    typeof(bool), typeof(ArticleViewer), new PropertyMetadata(true));
public bool IsNextTopicButtonEnabled
{
    get { return (bool)GetValue(IsNextTopicButtonEnabledProperty); }
    set
    {

        SetValue(IsNextTopicButtonEnabledProperty, value);
    }
}

public static readonly DependencyProperty IsPrevTopicButtonEnabledProperty = DependencyProperty.Register("IsPrevTopicButtonEnabled",
typeof(bool), typeof(ArticleViewer), new PropertyMetadata(true));
public bool IsPrevTopicButtonEnabled
{
    get { return (bool)GetValue(IsPrevTopicButtonEnabledProperty); }
    set
    {

        SetValue(IsPrevTopicButtonEnabledProperty, value);
    }
}

В конструкторе у меня есть эта строка: -

this.DataContext = this;

Привязка не работает должным образом, но я понятия не имею, Почему! Я знаю, что INotifyPropertyChanged не очень хорошо работает с WP7 в качестве Silverlight 4.0. Но у меня уже есть DependencyProperties. Что еще я могу для этого сделать?

Заранее спасибо:)

1 Ответ

2 голосов
/ 30 апреля 2011

ApplicationBar немного странный как элемент управления ... см. Этот пост "Почему панель приложения не является FrameworkElement?"

Я думаю, потому что ApplicationBar не является FrameworkElement, который вы можетевнутри него нет привязки данных - похоже на ответ Дерека на Получение AG_E_PARSER_BAD_PROPERTY_VALUE при привязке данных в пользовательском элементе управления WP7

Извините, что вам, возможно, просто нужно настроить ApplicationBar в CodeBehindа не через привязку данных - см. Изменение кнопки панели приложения во время выполнения

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...