72 messaggi dal 22 marzo 2012
Buongiorno lista

quello che per chiedere non so nemmeno se si possa fare (in rete alcuni dicono di si ma non mettono degli esempi e altri dicono di no)
Avrei bisogno sul controllo DataGrid creare un attributo.
Praticamente io ho il seguente codice
</DataGrid .......>
  <DataGrid.Columns>
    <DataGridTextColumn Binding="{Binding Path=SYSTEMID}" Header="{x:Static lt:Resources.SYSTEMID}" Width="100" />
  </DataGrid.Columns>
</DataGrid>


e avrei bisogno di aggiungere

</DataGrid .......>
  <DataGrid.Columns>
    <DataGridTextColumn Codice="0" Binding="{Binding Path=SYSTEMID}" Header="{x:Static lt:Resources.SYSTEMID}" Width="100"/>
  </DataGrid.Columns>
</DataGrid>


dove Codice="0" è il mio nuovo attributo che poi dovrò leggere a run-time per poter effettuare delle eleborazioni

La mia domanda è: si può fare o sapete indicarmi un sistema per poter fare quanto sopra?

Speranzoso in una risposta vi invio (a chi è o andrà) buone ferie e a tutti cordiali saluti

Perini Luca
Modificato da perini.luca il 08 agosto 2019 12:13 -
Modificato da perini.luca il 08 agosto 2019 12:13 -

Perini Luca
11.872 messaggi dal 09 febbraio 2002
Contributi
Ciao Luca, non puoi definire un attributo che non esiste come "Codice".
Tuttavia puoi crearti una attached property come vedi fare in questo esempio.
https://www.codemag.com/Article/1405061/XAML-Magic--Attached-Properties
Comincia a leggere dal paragrafo "A First Attached Property Example" perché prima l'articolo parla di un'altra tecnica che consiste nel creare classi ereditate dai controlli, anch'essa una soluzione valida.
Io ti consiglio di provare le attached properties però.

ciao,
Moreno
Modificato da BrightSoul il 11 agosto 2019 19:06 -

Enjoy learning and just keep making
72 messaggi dal 22 marzo 2012
Ciao Moreno

Grazie e scusa il ritardo ma non capisco come mai non mi arrivano le e-mail relative alle discussioni o forum che sto seguendo.

Vedo il link che mi hai segnalato e ti faccio sapere
Grazie ancora

Ciao

Perini Luca
72 messaggi dal 22 marzo 2012
Ciao Moreno

ho provato quello che mi hai consigliato e in effetti funziona perfettamente.

Ora devo capire se posso istanziare in una classe di un progetto esterno e collegarla.

Per adesso ho provato ma non ha funzionato ma sicuramente sbaglio qualcosa io.

Altra cosa strana è che se istanzio una classe con XAMLExtend (nome della mia classe) invece che con Ex non mi funziona mi dice che non trova XAMLExtend.

Sto verificando ma sta facendo quello di cui avevo bisogno.

Ciao e ancora grazie

Perini Luca
72 messaggi dal 22 marzo 2012
Ciao Moreno

con questa volevo ringraziarti e farti sapere se funziona perfettamente quello che mi hai consigliato e che riesco ad utilizzarlo con una classe esterna referenziata tra i riferimenti.

Per i posteri lascio qui il codice in modo che lo possano usare e, ben venga, migliorarlo:

using System.Windows;

namespace Core
{
    public class Test : DependencyObject
    {
        public static readonly DependencyProperty TestProperty = DependencyProperty.RegisterAttached("TestKey", typeof(string), typeof(Test), new PropertyMetadata(""));
        
        public static string GetTestProperty(DependencyObject nk)
        {
            return (string)nk.GetValue(TestProperty);
        }
        public static void SetTestProperty(DependencyObject nk, string value)
        {
            nk.SetValue(TestProperty, value);
        }
    }

L'unica cosa che devo poi inserire in ogni form la seguente riga di riferimento

......
xmlns:lang="clr-namespace:Core;assembly=Core"
......


Quello che vorrei. ma non so se si può fare, referenziarlo a livello di progetto in modo che inserito una volta sia visto su tutte le form che inserisco nuove.

Ringraziandoti ancora ti invio cordiali saluti

Perini Luca

Perini Luca

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.