J'ai un peu de problème avec les comportements attachés. Je souhaite fournir une liaison à une propriété de dépendance, mais la valeur n'est pas connue tant que le ViewModel n'est pas initialisé, le Setter échoue donc.La propriété attachée définie dans la classe statique ne fonctionne pas
Actuellement, j'ai ce code:
<Style TargetType="{x:Type visi:Chart}">
<Setter Property="att:ChartBehaviour.ExecuteCommandOnDoubleClick" Value="true"/>
<Setter Property="att:ChartBehaviour.ShowHideCommand" Value="{Binding OverviewHideCommand}"/>
</Style>
Le premier compositeur fonctionne parfaitement bien, mais le second n'a pas, comme OverviewHideCommand
ne seront pas disponibles (c.-à-est null
au point de départ. application de style) jusqu'à ce que l'objet de sauvegarde soit construit.
Des pointeurs sur la façon de contourner ce problème? J'aimerais vraiment rester en xaml si possible.
Edit:
Le problème est Apperently dans la définition de ShowHideCommand
, qui est définie comme propriété attachée (la classe est dans un espace de noms différent de celui du XAML lui-même, mais le XAML fait référence à l'espace de noms):
public static class ChartBehaviour
{
public static readonly DependencyProperty ShowHideCommandProperty =
DependencyProperty.RegisterAttached("ShowHideCommand",
typeof(ICommand),
typeof(Chart),
new PropertyMetadata(new DefaultCommand()));
}
Il est intéressant de noter que la propriété n'apparaît pas dans la classe Chart
. Comment devrais-je changer la définition pour qu'elle apparaisse dedans?
vous pouvez seulement comparer à l'égalité sur DataTrigger, il serait donc difficile de comparer à non null: -/J'ai trouvé une classe de liaison personnalisée pour cela mais cela semble un peu exagéré. – Femaref
Convertisseur personnalisé? C'est vraiment très commun. Je travaille sur une application WPF lourde, certains des convertisseurs les plus courants sont booléens à visibilité, non null (avec un paramètre inversé), etc. – Brandyn