Привязка данных с использованием вспомогательного класса в Silverlight 4 Ошибка - PullRequest
2 голосов
/ 05 января 2011

Я новичок во всем, что касается Silverlight. И есть проблема

У меня есть класс, полученный из Binding the Localizer, который объявлен так:

public class Localizer : Binding
{
    public Localizer()
    {
    }

    private string _key;

    /// <summary>
    /// Localization key manager.
    /// </summary>
    public string Key
    {
        get { return _key; }
        set
        {
            _key = value;

            Source = LocalizationHelper.Current;
            Path = new PropertyPath("Translations["+_key+"]");
        }
    }
}

Когда я использую его на странице XAML

<p:BasePage x:Class="Project.Pages.Desktop"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"    
xmlns:h="clr-namespace:Project.Helpers">   

<TextBlock Controls:DockPanel.Dock="Top" Text="{h:Localizer Key=UI_DSKTP_NAME}"/>  

Я получил ошибку

Type 'h:Localizer' is used like a markup extension but does not derive from MarkupExtension.    

Эта ошибка позволяет компилировать проект, и привязка работает, но это раздражает. Можете ли вы помочь мне решить эту проблему?

1 Ответ

1 голос
/ 06 января 2011

Использование {Binding} и других подобных расширений разметки встроено в синтаксический анализатор Xaml.Вы не можете «свернуть свое».

Мне кажется, что вы пытаетесь создать каркас локализации в своем приложении Silverlight.См. Ответы на этот вопрос Рекомендации по локализации Silverlight? .

...