XAML中是否有类似XPath的语法可以从集合中获取项目?

时间:2009-06-16 15:36:20

标签: wpf xml xaml binding

我的ViewModel中有一个Dictionary对象,其中的键/值可以在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 个答案:

答案 0 :(得分:1)

是的,您可以同时执行这两项操作,Binding上也有XPath属性。有一些很好的例子说明如何here以及整个binding how-to样本。您可以also use a collection's indexer执行此操作,但不需要单引号或转义引号。

<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; }
}