Erreur de liaison dans la barre d'outils masquée

Anton Shakalo

J'ai le prochain xaml:

<ToolbarTray Visibility="{Binding SomeProperty}">
    <Toolbar>
       <Checkbox IsEnabled="{Binding IsEnabled}/"
        <... other items />
    </Toolbar>
</Toolbar>

et deux classes comme contexte de données possible - pour deux fenêtres différentes.

 class ToolbarContextOne
 {
     public Visibility SomeProperty {get;set;}
 }

 class ToolbarContextTwo:ToolbarContextOne
 {
     public bool IsEnabled {get;set;}
 }

Je cache toolbartray de l'exemple lorsque je n'en ai pas besoin. Mais même si SomeProperty est défini sur Visibility.Collapsed, j'obtiens toujours des erreurs de liaison pour l'option IsEnabled lorsque j'utilise ToolbarContextOne comme contexte de données. Je soupçonne que cela arrive parce que c'est ainsi que fonctionne l'analyseur. Mais peut-être existe-t-il un moyen d'éviter ce problème sans que mes classes de contexte de données ne changent?

alex.b

Le moyen le plus simple d'éviter les erreurs de liaison consiste à utiliser FallbackValuedans la liaison:

<ToolbarTray Visibility="{Binding SomeProperty}">
    <Toolbar>
       <Checkbox IsEnabled="{Binding IsEnabled, FallbackValue=False}/"
        <... other items />
    </Toolbar>
</Toolbar>

Mise à jour
Une autre méthode consisterait à activer la liaison uniquement lorsque DataContext a une propriété spécifique:

<CheckBox>
    <CheckBox.Resources>
        <local:HasPropertyConverter x:Key="HasPropertyConverter"/>
    </CheckBox.Resources>
    <CheckBox.Style>
        <Style TargetType="CheckBox">
            <Style.Triggers>
                <DataTrigger Binding="{Binding Path=.,Converter={StaticResource HasPropertyConverter},
                                                      ConverterParameter=IsEnabled}"
                             Value="True">
                    <Setter Property="IsEnabled" Value="{Binding IsEnabled}"/>
                </DataTrigger>
            </Style.Triggers>
        </Style>
    </CheckBox.Style>
</CheckBox>

et convertisseur:

public class HasPropertyConverter : IValueConverter
{
    public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
    {
        if (value == null)
        {
            return false;
        }

        if (parameter == null)
        {
            return false;
        }

        PropertyInfo property = value.GetType().GetProperty(parameter.ToString());
        return property != null;
    }

    public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
    {
        throw new NotImplementedException();
    }
}

Cet article est collecté sur Internet, veuillez indiquer la source lors de la réimpression.

En cas d'infraction, veuillez [email protected] Supprimer.

modifier le
0

laisse moi dire quelques mots

0commentaires
connexionAprès avoir participé à la revue

Articles connexes

La barre d'outils est masquée dans PreferenceScreen imbriqué

Utilisation de windowTranslucentStatus avec la barre d'outils masquée

Barre d'outils non visible dans la liaison de données

Afficher la barre de progression dans la barre d'outils

Propriété de requête de liaison de données Android de SearchView dans la barre d'outils

Barre de progression sous la barre d'outils dans CoordinatorLayout

Erreur d'image de la barre d'outils

Barre d'outils disparaît tout en remplaçant fragment lors de la liaison de données dans Android

Quelle est l'erreur dans ma barre d'outils de navigation de tiroir personnalisée ?

Modifier la couleur de l'élément de menu de la barre d'outils (action non masquée)

Liaison de commande de la barre d'outils maître / détail

Débordement de la barre d'outils dans QML

Xamarin Forms: barre d'outils dupliquée dans la page principale de détails

Méthode recommandée pour modifier la taille de la barre d'outils dans Codename One

Icône personnalisée dans la barre d'outils Android

Icône carrée blanche dans la barre d'outils

Centrage du titre dans la barre d'outils personnalisée

Comment supprimer de l'espace dans la barre d'outils

Lable dans les formulaires xamarin de la barre d'outils

bouton de retour dans la barre d'outils des fragments

Alignement de gauche à droite dans la barre d'outils

Plusieurs couleurs dans le titre de la barre d'outils?

Changer le titre de la barre d'outils dans Android

Navigation dans les onglets de la barre d'outils Android

Problème de disposition dans la barre d'outils

Barre d'outils Android Studio en tant qu'erreur de la barre d'action

Arrêter la barre d'outils de l'activité affichée dans les fragments

Comment personnaliser une barre d'outils ajoutée à partir de la palette dans Android Studio

Rechercher dans une liste personnalisée, à partir de la barre d'outils - Kotlin

TOP liste

  1. 1

    Microsoft.WebApplication.targets

  2. 2

    Spring @RequestParam DateTime format comme ISO 8601 Date Heure facultative

  3. 3

    comment supprimer "compte de connexion google" à des fins de développement - actions sur google

  4. 4

    Comment ajouter une entrée à une table de base de données pour une combinaison de deux tables

  5. 5

    Passer la taille d'un tableau 2D à une fonction ?

  6. 6

    Exporter la table de l'arborescence vers CSV avec mise en forme

  7. 7

    Impossible d'accéder à la vue personnalisée pendant le test de l'interface utilisateur dans XCode

  8. 8

    Créer un système Buzzer à l'aide de python

  9. 9

    Comment changer le navigateur par défaut en Microsoft Edge pour Jupyter Notebook sous Windows 10 ?

  10. 10

    impossible d'obtenir l'image d'arrière-plan en plein écran dans reactjs

  11. 11

    Algorithme: diviser de manière optimale une chaîne en 3 sous-chaînes

  12. 12

    CSS: before ne fonctionne pas sur certains éléments,: after fonctionne très bien

  13. 13

    Conversion double en BigDecimal en Java

  14. 14

    Comment obtenir l'intégration contextuelle d'une phrase dans une phrase à l'aide de BERT ?

  15. 15

    Comment choisir le nombre de fragments et de répliques Elasticsearch

  16. 16

    Comment vérifier si un utilisateur spécifique a un rôle? Discord js

  17. 17

    Comment créer un bot à compte à rebours dans Discord en utilisant Python

  18. 18

    Existe-t-il un moyen de voir si mon bot est hors ligne ?

  19. 19

    comment afficher un bouton au-dessus d'un autre élément ?

  20. 20

    Comment activer le message Pylint "too-many-locals" dans VS Code?

  21. 21

    Je continue à obtenir l'objet 'WSGIRequest' n'a pas d'attribut 'Get' sur django

chaudétiquette

Archive