Gibt es eine XPath-ähnliche Syntax in XAML, die Elemente aus einer Sammlung bekommen?

StackOverflow https://stackoverflow.com/questions/1002292

  •  05-07-2019
  •  | 
  •  

Frage

Ich habe ein Dictionary-Objekt in meinem Viewmodel mit Schlüsseln / Werten, die Worte auf der Ansicht übersetzen.

Es ist möglich, die Sprachinformationen als XML-Objekt und wählt dann aus dem übersetzten Satz mit XPath, um so etwas zu bekommen:

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

Aber gibt es eine ähnliche Art und Weise dies mit einem Nicht-XML-Objekt zu tun , die eine Art von XPath-ähnlicher Syntax bietet, z.

Pseudo-Code:

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

Ich will nicht, eine Sammlung zu einem Listview oder anderen Sammelelement binden, will aber das einen Übersetzer Objekt individuelle Textblocks und Textfelder und ToolTips binden, usw. und dann einige verwenden Art Pfadsyntax ein bestimmtes Element aus der gebundenen Sammlung zu erhalten.

Ist das möglich?

War es hilfreich?

Lösung

Ja, Sie können beides tun, gibt es eine XPath-Eigenschaft auf als auch Bindung . Es gibt einige gute Beispiele dafür, wie es zu tun hier und während der Bindung how-to-Proben . Sie können auch eine Sammlung Indexer verwenden, es zu tun, aber es muss nicht Apostrophe oder entkam Zitate.

<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; }
}
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top