我的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 等,然后使用一些一种路径语法,用于从绑定集合中获取特定项目。
这可能吗?
答案 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; }
}