IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C# Discussion :

Projet WPF : x:name d'un élément inaccessible en raison de son niveau de protection


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Février 2015
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Chargé d'affaire

    Informations forums :
    Inscription : Février 2015
    Messages : 26
    Par défaut Projet WPF : x:name d'un élément inaccessible en raison de son niveau de protection
    Bonjour, dans une solution WPF j'ai plusieurs projets WPF dont 2 vont nous intéresser :
    1) Components
    2) StoreAndKeep

    Nom : TreeView.png
Affichages : 132
Taille : 45,3 Ko

    Dans Components se trouvent des UserControls et notamment celui-ci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    <UserControl
        x:Class="Components.Library.CtrListBox"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:local="clr-namespace:Components.Library"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        d:DesignHeight="450"
        d:DesignWidth="800"
        mc:Ignorable="d">
        <ListBox
            x:Name="LB"
            Width="{Binding ListBoxWidth}"
            Height="{Binding ListBoxHeight}"
            Margin="5"
            HorizontalAlignment="Left"
            VerticalAlignment="Top"
            Background="White"
            BorderBrush="{Binding ListBoxBorderBrush}"
            BorderThickness="3"
            DataContext="{Binding RelativeSource={RelativeSource Mode=FindAncestor,
            AncestorType=local:CtrListBox}}"
            IsEnabled="{Binding ListBoxEnabledState}"
            ScrollViewer.HorizontalScrollBarVisibility="Auto"
            ScrollViewer.VerticalScrollBarVisibility="Auto"
            SelectedValue="{Binding ListBoxValue}" />
    </UserControl>
    il est ensuite utilisé dans une Page du dossier View de StoreAndSave comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    <Page
        x:Class="StoreAndKeep.View.DocumentsManagementView"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:component="clr-namespace:Components.Library;assembly=Components"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        xmlns:vmodel="clr-namespace:StoreAndKeep.ViewModel"
        Title="DocumentsManagementView"
        d:DataContext="{d:DesignInstance Type=vmodel:DocumentsManagementViewModel}"
        d:DesignHeight="854"
        d:DesignWidth="1500"
        Background="{StaticResource Vs_Background}"
        mc:Ignorable="d">
     
        <StackPanel>
     
            <!--#region Documents Temporaires-->
            <GroupBox Header="Fichiers Temporaires" Style="{StaticResource GroupBoxStyle}">
                <StackPanel>
                    <component:Ribbon
                        x:Name="TemporaryFilesRibbon"
                        ButtonDeleteVisibility="Visible"
                        ButtonSelectVisibility="Visible"
                        CmdButtonDelete="{Binding DeleteTemporaryFolderItemCmd}"
                        CmdButtonSelect="{Binding GetSelectedTemporaryFileDetailsCmd}" />
                    <component:CtrListBox
                        x:Name="TemporaryFolderItems"
                        ListBoxBorderBrush="{StaticResource UiColor}"
                        ListBoxHeight="150"
                        ListBoxValue="{Binding TemporaryFilePath, UpdateSourceTrigger=PropertyChanged}"
                        ListBoxWidth="600" />
                </StackPanel>
            </GroupBox>
            <!--#endregion-->
    Ensuite dans la partie code behind de cette vue j'ai besoin de faire référence à 'LB' qui est le x:name de ma listbox, comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    public partial class DocumentsManagementView : Page
    {
        protected DocumentsManagementViewModel ViewModel {  get; set; }
        public DocumentsManagementView()
        {
            InitializeComponent();
            ViewModel = new DocumentsManagementViewModel(TemporaryFolderItems.LB);
            DataContext = ViewModel;
        }
    }
    Mais le mot 'LB' est souligné en rouge avec un erreur : 'CtrListBox.LB' est inaccessible en raison de son niveau de protection

    Que dois-je modifier dans mon code ??

  2. #2
    Expert éminent Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 204
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 204
    Par défaut
    tu peux ajouter une propriété dans ton usercontrol si qqn doit réellement accéder au sous controle du usercontrol (c'est pas forcément une bonne idée)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    public ListBox InternalListbox { get => this.LB; }
    ca fera le relais
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 1
    Dernier message: 06/02/2022, 13h07
  2. Réponses: 9
    Dernier message: 11/01/2019, 17h29
  3. [Débutant] Erreur "inaccessible en raison de son niveau de protection"
    Par Heavy Metal Hero dans le forum C#
    Réponses: 2
    Dernier message: 02/05/2014, 09h44
  4. CS0122: .. est inaccessible en raison de son niveau de protection
    Par laurent12345 dans le forum Développement Web avec .NET
    Réponses: 2
    Dernier message: 13/12/2011, 12h39
  5. Erreur "inaccessible en raison de son niveau de protection"
    Par perdos dans le forum Windows Forms
    Réponses: 5
    Dernier message: 22/08/2007, 16h43

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo