Existe-t-il une syntaxe de type XPath dans XAML permettant d'extraire des éléments d'une collection?
Question
J'ai un objet Dictionnaire dans mon ViewModel avec une clé / des valeurs qui traduisent des mots dans la vue.
Il est possible d'obtenir les informations sur la langue sous la forme d'un objet XML , puis de sélectionner la phrase traduite avec XPath, comme suit:
<TextBlock DataContext="{TranslatorDictionaryXml}" Text="{Binding XPath=/terms/term[key='edit']/value[@lang='en-US']}"/>
Mais existe-t-il une méthode similaire pour le faire avec un objet non-XML offrant une sorte de syntaxe semblable à celle de XPath, par exemple.
PSEUDO-CODE:
<TextBlock DataContext="{CurrentLanguageTranslatorDictionary}" Text="{Binding path=Key['edit']}"/>
Je ne veux pas lier une collection à un ListView ni à aucun autre élément de la collection, mais lier l'objet d'un traducteur à TextBlocks, TextBoxes et ToolTips individuels , etc., puis en utiliser type de syntaxe de chemin pour extraire un élément particulier de la collection liée.
Est-ce possible?
La solution
Oui, vous pouvez faire les deux. Il existe une propriété XPath sur un Liaison également. Voici de bons exemples de ici , et tout au long du exemples de liaison contraignants . Vous pouvez utiliser également l'indexeur d'une collection pour le faire, mais il n'a pas besoin de guillemets simples ni de caractères d'échappement. citations.
<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; }
}