Existe-t-il une syntaxe de type XPath dans XAML permettant d'extraire des éléments d'une collection?

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

  •  05-07-2019
  •  | 
  •  

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?

Était-ce utile?

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; }
}
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top