Ciao a tutti, lavorando sempre con wpf in modo da imparare i concetti basilari, sto tentando stavolta di bindare una label.

Se per bindare una DataGrid avevo usato questo metodo:
            DataAccessDbDataContext s = new DataAccessDbDataContext();
            List<tbl_Anagrafica_Azienda> dati = (from anag in s.tbl_Anagrafica_Azienda select anag).ToList();
            DgAnagrafica.ItemsSource = dati;


Dove praticamente nella GridView veniva riversato l'intero risultato della query, per una label il discorso cambia perche ne devo usare soltanto uno (quelllo specifico di un dato campo del db) quindi, credo, che il metodo sopra citato o sia da modificare o sia da rifare...

In giro trovo del materiale che per certi versi si differenzia dalla mia necessità (come ad esempio l'uso di una classe che contiene gia i dati, utilizzata come sorgente dati).

Grazie a tutti.

Marina di Camerota OnLine
VicenzaSoftware:Creazione siti web
Forum Tecnologie
Ciao Ricardo,
non so se nel frattempo hai risolto, comunque nel caso ti dico come ho risolto io.
Nel caso in questione di una label, una valida ipotesi potrebbe essere quella di una dependency property e non di un binding diretto.
Si tratta di scrivere un po' di codice, ma tutto sommato può valerne la pena.
Ti posto la mia soluzione così come l'ho realizzata per verificare la tua necessità, fammi sapere se risolve il tuo problema.

Questa la parte xaml

<Window x:Class="WpfApplication1.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="MainWindow" Height="350" Width="525" Loaded="Window_Loaded" IsTabStop="False">
    <Grid>
        <Label Height="28" HorizontalAlignment="Left" Margin="12,218,0,0" Name="label1" VerticalAlignment="Top" Width="198" />
        <DataGrid AutoGenerateColumns="True" Height="200" HorizontalAlignment="Left" Margin="12,12,0,0" Name="dataGrid1" VerticalAlignment="Top" Width="200" />
    </Grid>
</Window>


questa la parte codice

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;

namespace WpfApplication1
{
    public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();
        }

        // Dependency Property
        public static readonly DependencyProperty MySetCountProperty =
             DependencyProperty.Register("MySetCount", typeof(Int32), typeof(MainWindow), 
                new FrameworkPropertyMetadata(0, OnMySetCountPropertyChanged)); 

        // Proprietà "wrapper" per la Dependency Property
        public int MySetCount
        {
            get { return (Int32)GetValue(MySetCountProperty); }
            set { SetValue(MySetCountProperty, value); }
        }

        private void Window_Loaded(object sender, RoutedEventArgs e)
        {
            // il mio "set" di dati    
            var mySet = new[]{ 
                new {id=1, description="test_1"},
                new {id=2, description="test_2"},
                new {id=3, description="test_3"}
            };

            // bindo il mio set di dati
            dataGrid1.ItemsSource = mySet;

            // valorizzo la proprietà "wrapper"
            MySetCount = mySet.Count();
        }

        /// <summary>
        /// Gestore dell'evento di "changed" della Dependency Property
        /// </summary>
        /// <param name="source"></param>
        /// <param name="e"></param>
        private static void OnMySetCountPropertyChanged(DependencyObject source, DependencyPropertyChangedEventArgs e)
        {
            // trovo la "MainWindow" in cui si è verificato l'evento
            MainWindow mainWindow = (MainWindow)source;
            // trovo la label da "bindare"
            object objLabel = mainWindow.FindName("label1");
            // se la trovo ne valorizzo il content con il valore assegnato alla property
            if (objLabel != null)
            {
                ((Label)objLabel).Content = ((Int32)e.NewValue).ToString();
            }
        }
    }
}


HTH,
Roberto
Modificato da dancerjude il 22 agosto 2011 23.09 -
Ciao Roberto! Mi fa piacere rivederti nel forum!

Comunque ieri dovevo fare delle prove, se il mio pc non faceva i capricci (VS non si apre e neanche IE) sto cercando di risolvere sta cosa che mi sta mandando in bestia, spero stasera riuscirci...

Appena posso posto la risposta qui.

Marina di Camerota OnLine
VicenzaSoftware:Creazione siti web
Forum Tecnologie
alla fine ho risolto creando una grid (bindata) nella quale ho messo tutti i textblock che mi occorrevano. Nel code File ho messo questo:

            DataAccessDbDataContext s = new DataAccessDbDataContext();
            List<tbl_Anagrafica_Azienda> dati = (from anag in s.tbl_Anagrafica_Azienda select anag).ToList();
            
            myGrid.DataContext = dati.FirstOrDefault(); 


Grazie a tutti!

Marina di Camerota OnLine
VicenzaSoftware:Creazione siti web
Forum Tecnologie

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.
Community
Ultimi messaggi
UTENTI ONLINE
    In primo piano

    I più letti di oggi

    Media
    In evidenza
    MISC