none
Binding tra UserControls RRS feed

  • Domanda

  • Ciao a tutti,

    ho creato un mini progetto per provare a passare un dato da un userControl ad un altro.

    Prima però per vedere se tutto funzionava ho creato un singolo userControl ed ho bindato ad una textblock il risultato.

    Spostando la textblock su un altro userControl non ho trovato modo di bindare tramite dependency il risultato.

     

    La solution è composta da :

    -mainwindow.xaml e mainwindow.xaml.cs

    -ucIP.xaml e ucIP.xaml.cs

    -ucText.xaml e ucText.xaml.cs [futuro userControl contenente la textblock]

    Primo Step: [codice che funziona]

    mainwindow.xaml

    <Grid x:Name="grid_content">
            <local:GridControl x:Name="GridControl1" />
            <TextBox Text="{Binding ElementName=GridControl1, Path=IPAddress}" Foreground="Red"/>
    </Grid>
    
    mainwindow.xaml.cs [contiene solo InitializeComponent]

    ucIP.xaml  [rimasto invariato dalla creazione]

    ucIP.xaml.cs

    public partial class ucIP: UserControl
        {
            public static readonly DependencyProperty IPAddressProperty = DependencyProperty.Register("IPAddress", 
                typeof(string), 
                typeof(ucIP), 
                new UIPropertyMetadata("1.1.1.1"));
    
            public string IPAddress
            {
                get { return (string)GetValue(IPAddressProperty); }
                set { SetValue(IPAddressProperty, value); }
            }
    
            public ucIP()
            {
                InitializeComponent();
    
                IPHostEntry IPHost = System.Net.Dns.GetHostEntry(System.Net.Dns.GetHostName());
                foreach (var ipAddress in IPHost.AddressList)
                {
    
                    IPAddress = "IP Settato dal primo UC: " + ipAddress.ToString();
    
                }
            }
    
        }
    

    Secondo Step: [codice che NON funziona] spostamento della textblock in un UserControl

    mainwindow.xaml

    <Grid x:Name="grid_content">
            <local:GridControl x:Name="GridControl1" />
            <local:ucText x:Name="ucTextName" VerticalAlignment="Bottom" FontSize="20"/>
    </Grid>
    

    mainwindow.xaml.cs [invariato]

    ucIP.xaml.cs [invariato]

    ucIP.xaml [invariato]

    ucText.xaml.cs [invariato]

    ucText.xaml

    <TextBox Foreground="DarkOrange" x:Name="tb1" Margin="0,0,10,20" HorizontalAlignment="Right" Text="{Binding ElementName=GridControl1, Path=IPAddress}"/>
    


    In questo modo non funziona che cosa ho dimenticato per farsi che il dato venga passato a questo userControl???

     

    Grazie

    venerdì 16 settembre 2011 15:08

Risposte

  • Ciao a tutti,

    non so se è la soluzione migliore, ma ho esposto un metodo pubblico ucText.xaml che richiamo da ucIP.xaml, ed ho risolto.

    Grazie

    • Contrassegnato come risposta fo_ol venerdì 23 settembre 2011 18:00
    venerdì 23 settembre 2011 18:00