Существует ли XPAM-подобный синтаксис в XAML, который может извлекать элементы из коллекции? - PullRequest
1 голос
/ 16 июня 2009

У меня есть объект Dictionary в моей ViewModel с ключом / значениями, которые переводят слова в View.

Можно получить информацию о языке в виде объекта XML , а затем выбрать переведенную фразу с помощью XPath, что-то вроде этого:

<TextBlock DataContext="{TranslatorDictionaryXml}" Text="{Binding XPath=/terms/term[key='edit']/value[@lang='en-US']}"/>

Но есть ли аналогичный способ сделать это с не XML-объектом , который предлагает некоторый XPath-подобный синтаксис, например,

псевдокод:

<TextBlock DataContext="{CurrentLanguageTranslatorDictionary}" Text="{Binding path=Key['edit']}"/>

Я не хочу связывать коллекцию с ListView или любым другим элементом коллекции, но хочу связать один объект Translator с отдельными TextBlocks и TextBoxes и ToolTips и т. Д., А затем использовать какой-либо вид синтаксиса пути для получения конкретного элемента из связанной коллекции.

Возможно ли это?

1 Ответ

1 голос
/ 16 июня 2009

Да, вы можете сделать и то, и другое, есть свойство XPath для Binding . Есть несколько хороших примеров того, как это сделать здесь , и во всех обязательных образцах . Вы можете также использовать индексатор коллекции , чтобы сделать это, но ему не нужны одинарные кавычки или экранированные кавычки.

<TextBox Text="{Binding Path=Countries[US]}" />

public partial class Window1 : Window
{
    public Window1()
    {
        InitializeComponent();

        Countries = new Dictionary<string, string>();
        Countries.Add("US", "United States");
        Countries.Add("CA", "Canada");

        this.DataContext = this;
    }

    public Dictionary<string, string> Countries { get; set; }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...