Существует ли в XAML синтаксис, подобный XPath, который может извлекать элементы из коллекции?
Вопрос
У меня есть объект Dictionary в моей ViewModel с ключом / значениями, которые переводят слова в представлении.
Можно получить языковую информацию в виде 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 к отдельные текстовые блоки, текстовые поля и всплывающие подсказки, и т.д.а затем используйте какой-то синтаксис path, чтобы получить определенный элемент из связанной коллекции.
Возможно ли это?
Решение
Да, вы можете сделать и то, и другое, есть свойство XPath на Обязательный также.Есть несколько хороших примеров того, как это сделать здесь, и на протяжении всего инструкции по привязке образцы.Ты можешь также используйте индексатор коллекции чтобы сделать это, но для этого не нужны одинарные кавычки или экранированные кавычки.
<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; }
}