+ Rispondi al messaggio
Visualizzazione dei risultati da 1 a 3 su 3

[WPF + C#] Workaround su Errore XDG0008 su file XAML

  1. #1
    Sgrubak ora è in linea Scribacchino
    Buonasera a tutti!

    Ho codificato una form per una app WPF usando XAML, e non ho avuto grossi problemi se non relativamente alla gestione del Binding tra la Width di alcune GridViewColumn e le Properties dell'app. Riporto di seguito un estratto significativo del codice:
    <Window x:Class="ControlloScorte.MainWindow"
            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:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
            xmlns:local="clr-namespace:ControlloScorte"
            xmlns:properties="clr-namespace:ControlloScorte.Properties"
            mc:Ignorable="d"
            Title="MainWindow"
            Height="450"
            Width="800"
            SizeChanged="Window_SizeChanged"
            Closing="Window_Closing">
        <Window.Resources>
            <local:BackColorConverter x:Key="BcConverter"/>
        </Window.Resources>
        <Grid>
            <Grid.RowDefinitions>
                <RowDefinition Height="50"/>
                <RowDefinition Height="*"/>
            </Grid.RowDefinitions>
    
    <!-- Altri controlli perfettamente funzionanti -->
    
                <ListView Grid.Column="2"
                          x:Name="elencoRighe"
                          HorizontalAlignment="Stretch">
                    <ListView.ItemContainerStyle>
                        <Style TargetType="ListViewItem">
                            <Setter Property="HorizontalContentAlignment"
                                    Value="Stretch"/>
                        </Style>
                    </ListView.ItemContainerStyle>
                    <ListView.View>
                        <GridView>
                            <GridViewColumn Header="Doc"
                                            Width="{Binding Source={x:Static properties:Settings.Default},
                                                            Path=WidthDocColumn,
                                                            Mode=TwoWay}"
                                            DisplayMemberBinding="{Binding Path=Cd_DO}"/>
                            
    <!-- Altre colonne simili alla precedente -->
    
                            <GridViewColumn Header="Disp"
                                            Width="{Binding Source={x:Static properties:Settings.Default},
                                                            Path=WidthDispColumn,
                                                            Mode=TwoWay}" >
                                <GridViewColumn.CellTemplate>
                                    <DataTemplate>
                                        <TextBlock Text ="{Binding Impegnato}"
                                                   Background="{Binding Path = Impegnato,
                                                                        Converter={StaticResource BcConverter}}"/>
                                    </DataTemplate>
                                </GridViewColumn.CellTemplate>
                                </GridViewColumn>
                        </GridView>
                    </ListView.View>
                </ListView>
            </Grid>
        </Grid>
    </Window>
    
    Ora: il tentativo era memorizzare tra una sessione e l'altra le varie larghezze delle colonne. Funziona perfettamente, infatti sia in Debug che in Release non ci sono problemi ed il comportamento è quello previsto.

    Peccato che qualcosa intralci l'anteprima della form. Invece che vedere i controlli nel Designer di VS2019, mi ritrovo con l'avviso di "Markup non valido". Nella finestra di [Elenco Errori] mi ritrovo:
    Errore	XDG0008	Il nome "Settings" non esiste nello spazio dei nomi "clr-namespace:ControlloScorte.Properties".	ControlloScorte	miaPath\ControlloScorte\ControlloScorte\MainWindow.xaml
    
    L'errore viene ripetuto per sette volte, che è il numero di colonne che ho predisposto nella griglia e fa sempre riferimento alla riga numero 1 del file XAML.

    Viene infine riportato un'ottava volta, relativamente alla riga 15, dove è dichiarato il [BackColorConverter] (se serve riporto il codice, ma è comunque corretto e funzionante).

    Googlando ho scoperto di non essere il primo a bisticciare con questo problema, ma:
    1) Riavviare VS2019;
    2) Pulire la soluzione ed effettuare il Rebuild;
    3) Chiudere VS, cancellare la cartella ".vs" e fare il Rebuild;
    4) Modificare il framework di destinazione;
    5) Aggiungere il tag "assembly";
    6) Modificare a [Public] il Modifier delle Settings.

    non hanno sortito alcun effetto. Rimuovendo il Binding alle proprietà e la dichiarazione del converter, tutto riprende a funzionare istantaneamente.

    Qualcuno ha trovato un metodo per aggirare il problema?

  2. #2
    Quote Originariamente inviato da Sgrubak
    Errore XDG0008 Il nome "Settings" non esiste nello spazio dei nomi "clr-namespace:ControlloScorte.Properties". ControlloScorte miaPath\ControlloScorte\ControlloScorte\MainWindow.xaml
    miaPath è un percorso UNC ?

    Se sì, prova a mappare il percorso con una lettera di unità oppure a spostare su un percorso locale il progetto.

    Sembra che possa dipendere anche da questo.
    ℹ️ Leggi di più su Fix ...

  3. #3
    Sgrubak ora è in linea Scribacchino
    Quote Originariamente inviato da Fix Visualizza il messaggio
    miaPath è un percorso UNC ?
    Esatto! Ho spostato l'intera cartella in locale e ha rimosso gli errori.

    Non ci sarei mai arrivato... Ho migrato tutti i progetti tempo fa in una cartella sul server per usufruire dei backup, e ho solo è ho solo più lavorato con gli altri che sono WinForm e non ho mai riscontrato problemi. Questo era un po' che non lo riaprivo e non avevo collegato le cose.

    Quote Originariamente inviato da Fix Visualizza il messaggio
    prova a mappare il percorso
    Ho tentato ma non mi trova la rete... Indagherò su questo aspetto ed eventualmente aprirò un'altra discussione nella sezione apposita.

    Grazie mille!

+ Rispondi al messaggio

Potrebbero interessarti anche ...

  1. Risposte: 1
    Ultimo Post: 12-09-2014, 14:31
  2. Windows 8: XAML binding immagine
    Da amanu86 nel forum Visual Basic .Net
    Risposte: 0
    Ultimo Post: 01-08-2014, 15:07
  3. Risposte: 3
    Ultimo Post: 26-10-2012, 14:45
  4. [VB 2010] Workaround per la stampa di MSChart
    Da trystan nel forum Visual Basic .Net
    Risposte: 1
    Ultimo Post: 07-02-2011, 21:18
  5. Qualche info sugli XAML e WPF
    Da Zigo nel forum C#
    Risposte: 0
    Ultimo Post: 29-06-2009, 10:09