2009-06-16 11 views
1

私はViewの単語を変換するキー/値を持つViewModelのDictionaryオブジェクトを持っています。XAMLには、コレクションからアイテムを取得できるXPathのような構文がありますか?

このような何か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コントロールまたはその他のコレクション要素にコレクションをバインドしたいのですが、個々のTextBlockとのTextBoxやツールヒントに1つの翻訳オブジェクトをバインドする必要はありません次に、何らかの種類のパス構文を使用して、バインドされたコレクションから特定のアイテムを取得します。

これは可能ですか?

答えて

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

ありがとう! –

関連する問題