Spécifiez le type de contexte de données dans la boîte de liste ItemContainer avec style

Dans un contrôle IsSelected propriété IsSelected d’un ItemContainer est IsSelected propriété IsSelected de mon ViewModel à l’aide de la syntaxe .

Cela fonctionne bien, mais je reçois un avertissement de Resharper:

Impossible de résoudre la propriété ‘IsSelected’ dans le contexte de données de type “FooSolution.BarViewModel”.

Comment spécifier un type de DataContext sur ListBox ItemContainer pour se débarrasser de cet avertissement?

Voici le code. J’ai une classe BarViewModel :

 public ObservableCollection FooItems { get;set; } 

BarViewModel est affecté à DataContext dans le Control qui contient le ListBox.

et FooViewModel comme suit:

 public bool IsSelected { get { return isSelected; } set { if (isSelected == value) { return; } isSelected = value; RaisePropertyChanged(() => IsSelected); } } 

et XAML aiment ça:

        

Mise à jour J’ai essayé de définir d:DataContext aide d’un setter, comme suggéré par HighCore, mais malheureusement, cela n’aide pas et même brise la construction:

  

(Lance: Erreur 1 La balise ‘DesignInstance’ n’existe pas dans l’espace de noms XML ‘schemas.microsoft.com/expression/blend/2008’. Ligne 31, position 50.)

Mise à jour 2 Enfin, la solution consiste à définir d:DataContext sur l’élément de style lui-même (voir ma réponse ci-dessous):

     

Comme l’a souligné @HighCore, la solution consiste à spécifier l’atsortingbut d:DataContext partir du kit de développement d:DataContext SDK). Cependant, il ne fonctionne que lorsqu’il est défini sur un élément Style lui-même, et non dans le configurateur de propriété:

    

Cela supprime l’avertissement de Resharper et modifie également le chemin de liaison lorsque la propriété est rejetée sur le ViewModel. Cool!

La spécification de d:DataContext="{d:DesignInstance nmspc:Clz}" avec d’autres atsortingbuts de balise Style ne m’a pas aidée: R # / IntelliSense a vraiment arrêté de mettre en surbrillance les propriétés que je liais, mais le concepteur m’a également montré un message d’erreur au lieu de la vue .

L’astuce que j’ai découverte consiste à spécifier dans la balise Style . Et cela semblait si universel qu’il répond à une autre question, à propos de l’utilisation d’interfaces en tant que d:DataContext .

Voici ma réponse à cette question avec un petit exemple: https://stackoverflow.com/a/46637478/5598194

utilisez d:DataContext comme ceci:

  

Vous devez également append les éléments xmlns suivants à l’élément racine:

  xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" mc:Ignorable="d" 

Ajout aux réponses précédentes: pour se débarrasser de l’erreur

La propriété ‘DataContext’ n’est pas attachable aux éléments de type ‘Style’

append un espace de nom factice

 xmlns:ignore="designTimeAtsortingbute" 

et l’utiliser maintenant au lieu de d: DataContext