Visual Studio 2010 SP1 - Silverlight 5 - i Behavior in Visual Basic disabilitano l'intellisense sullo XAML

Answered Visual Studio 2010 SP1 - Silverlight 5 - i Behavior in Visual Basic disabilitano l'intellisense sullo XAML

  • Monday, June 11, 2012 9:14 AM
     
     

    Salve a tutti!

    Apro un nuovo thread per una questione che avevo già proposto precedentemente in quanto ho degli elementi nuovi che trasformano la domanda. Naturalmente se avrò risposta provvederò ad aggiornare anche quel vecchio thread.

    Il problema è questo: l'intellisense per il codice XAML della mia applicazione Silverlight 5 creata con Visual Studio 2010 SP1 è disabilitato. Mi sono accorrto che questo dipende dalla presenza nel progetto Silverlight di alcuni Behavior: se commento i Behavior l'intellisense ritorna a funzionare. Il problema si verifica indipendentemente dal tipo di Behavior, anche con un Behavior vuoto.

    Altro particolare: se scrivo lo stesso codice in un progetto C#, l'intellisense lavora bene.

    Questo il mio codice Visual Basic:

    -Nei riferimenti del progetto ho aggiunto System.Windows.Interactivity

    -Nel code-behind:
    Public Class MyBehavior
        Inherits System.Windows.Interactivity.Behavior(Of DependencyObject)

        ' posso anche lasciarlo vuoto
    End Class

    - Nello XAML della pagina aggiungo questi namespace:
    xmlns:c="clr-namespace:myCurrentAssembly"
    xmlns:i="http://schemas.microsoft.com/expression/2010/interactivity"
    xmlns:ei="http://schemas.microsoft.com/expression/2010/interactions"

    L'intelllisense ricomincia a funzionare se rimuovo il Behavior o se rimuovo il namespace c dalla pagina.

    Non so come fare...

    Pileggi

    PS Un altro particolare scoperto recentemente: se io metto il Behaviour dentro la class della MainPage l'intellisense ritorna a funzionare.

    Partial Public Class MainPage
      Inherits UserControl

      Public Class MyBehaviour
        Inherits System.Windows.Interactivity.Behavior(Of DependencyObject)

      End Class
    End Class

    Però così non posso più usarlo, in quanto non è più accessibile dal namespace c...

    xmlns:c="clr-namespace:myCurrentAssembly"
    xmlns:i="http://schemas.microsoft.com/expression/2010/interactivity"
    xmlns:ei="http://schemas.microsoft.com/expression/2010/interactions"

    <Button Name="Button1">
      <i:Interaction.Behaviors>
        <c:MyBehaviour/>
      </i:Interaction.Behaviors>
    < /Button>





    • Edited by pileggi Friday, June 15, 2012 10:19 AM
    •  

All Replies

  • Monday, June 11, 2012 9:47 AM
    Answerer
     
     
    Hai lo stesso errore con un progetto Silverlight 4.0?
     

    Corrado Cavalli [Microsoft .NET MVP-MCP]
    UGIdotNET - http://www.ugidotnet.org
    Weblog: http://blogs.ugidotnet.org/corrado/
    Twitter: http://twitter.com/corcav
  • Monday, June 11, 2012 10:01 AM
     
     
    Hai lo stesso errore con un progetto Silverlight 4.0?

    Corrado Cavalli [Microsoft .NET MVP-MCP]
    UGIdotNET - http://www.ugidotnet.org
    Weblog: http://blogs.ugidotnet.org/corrado/
    Twitter: http://twitter.com/corcav

    Grazie dell'interessamento, Corrado.

    La risposta è si, stessa cosa.

    Pileggi

  • Monday, June 11, 2012 11:52 AM
    Answerer
     
     
    Stranissimo, ho tonnellate di codice Silverlight con behavior custom e
    non ho problemi con l'intellisense.
    L'unica cosa che mi viene da pensare è che stai, per qualche motivo,
    referenziando una libreria Interactivity non compatibile o che manda
    qualche altro riferimento.
    Prova con un progetto nuovo aggiungendo un behavior di Blend.
     

    Corrado Cavalli [Microsoft .NET MVP-MCP]
    UGIdotNET - http://www.ugidotnet.org
    Weblog: http://blogs.ugidotnet.org/corrado/
    Twitter: http://twitter.com/corcav
  • Monday, June 11, 2012 3:07 PM
     
     
    Stranissimo, ho tonnellate di codice Silverlight con behavior custom e
    non ho problemi con l'intellisense.
    L'unica cosa che mi viene da pensare è che stai, per qualche motivo,
    referenziando una libreria Interactivity non compatibile o che manda
    qualche altro riferimento.
    Prova con un progetto nuovo aggiungendo un behavior di Blend.

    Corrado Cavalli [Microsoft .NET MVP-MCP]
    UGIdotNET - http://www.ugidotnet.org
    Weblog: http://blogs.ugidotnet.org/corrado/
    Twitter: http://twitter.com/corcav
    Provato... niente, stesso risultato. Posso aggiungere solo un particolare: in un progetto C# non succede, però la versione della libreria Interactivity è la stessa. La mia ipotesi è che l'intellisense vada in palla con i riferimenti ai namespaces nella pagina. Forse C#, che specifica sempre anche il namespace corrente, riesce a evitare questo errore. Mi sa che mi arrendo, se non viene fuori altro me lo tengo così. Grazie in ogni caso! Pileggi
  • Thursday, June 14, 2012 4:22 PM
     
     

    Provato... niente, stesso risultato. Posso aggiungere solo un particolare: in un progetto C# non succede, però la versione della libreria Interactivity è la stessa. La mia ipotesi è che l'intellisense vada in palla con i riferimenti ai namespaces nella pagina. Forse C#, che specifica sempre anche il namespace corrente, riesce a evitare questo errore. Mi sa che mi arrendo, se non viene fuori altro me lo tengo così. Grazie in ogni caso! Pileggi

    Un altro particolare se io metto il Behaviour dentro la class della MainPage l'intellisense ritorna a funzionare.

    Partial Public Class MainPage
      Inherits UserControl

      Public Class MyBehaviour
        Inherits System.Windows.Interactivity.Behavior(Of DependencyObject)

      End Class
    End Class

    Però così non posso più usarlo, in quanto non è più accessibile dal namespace c...

    xmlns:c="clr-namespace:myCurrentAssembly"
    xmlns:i="http://schemas.microsoft.com/expression/2010/interactivity"
    xmlns:ei="http://schemas.microsoft.com/expression/2010/interactions"

    <Button Name="Button1">
      <i:Interaction.Behaviors>
        <c:MyBehaviour/>
      </i:Interaction.Behaviors>
    </Button>

    Oltre alla diffcoltà di dover adattare (ammesso che sia possibile adattarlo) il codice contenuto dentro il Behavior.

    A meno di qualche nuovo suggerimento sono ancora senza intellisense...

    Pileggi



    • Edited by pileggi Friday, June 15, 2012 10:19 AM
    •  
  • Wednesday, June 27, 2012 10:46 AM
     
     
    Stranissimo, ho tonnellate di codice Silverlight con behavior custom e
    non ho problemi con l'intellisense.
    L'unica cosa che mi viene da pensare è che stai, per qualche motivo,
    referenziando una libreria Interactivity non compatibile o che manda
    qualche altro riferimento.
    Prova con un progetto nuovo aggiungendo un behavior di Blend.

    Corrado Cavalli [Microsoft .NET MVP-MCP]
    UGIdotNET - http://www.ugidotnet.org
    Weblog: http://blogs.ugidotnet.org/corrado/
    Twitter: http://twitter.com/corcav

    Salve Corrado,

    Nel frattempo ho messo il problema su Connect

    https://connect.microsoft.com/VisualStudio/feedback/details/748288/visual-studio-2010-sp1-silverlight-5-project-visual-basic-behavior-disables-xaml-intellisense

    c'è anche un progettino di test da scaricare.

    Purtroppo ancora non mi hanno risposto :-(

    Non sono certo che la cosa si verifichi a tutti e sia un bug universale di Visual Studio. Potresti per favore confermarmi che il progettino di test che ho messo su connect da lo stesso problema anche a te (non c'è l'intellisense sullo XAML)?

    Pileggi

  • Wednesday, June 27, 2012 10:53 AM
     
     Answered

    Ciao pileggi,

    You wrote on 27/06/2012 :

    Non sono certo che la cosa si verifichi a tutti e sia un bug universale di Visual Studio. Potresti per favore confermarmi che il progettino di test che ho messo su connect da lo stesso problema anche a te (non c'è l'intellisense sullo XAML)?

    Stesso problema anche da me, mentre su VS12 va, prova a definire il behavior in un altro assembly.

    .m



    blog @ //milestone.topics.it
    • Marked As Answer by pileggi Wednesday, April 17, 2013 3:45 PM
    •  
  • Thursday, June 28, 2012 8:52 AM
     
     

    Ciao pileggi,

    You wrote on 27/06/2012 :

    Non sono certo che la cosa si verifichi a tutti e sia un bug universale di Visual Studio. Potresti per favore confermarmi che il progettino di test che ho messo su connect da lo stesso problema anche a te (non c'è l'intellisense sullo XAML)?

    Stesso problema anche da me, mentre su VS12 va, prova a definire il behavior in un altro assembly.

    .m



    blog @ //milestone.topics.it

    Ok su un altro assembly va, ma diventerebbe molto più difficile gestire il codice dei vari Behavior, per adesso me lo tengo così. Grazie comunque.