Diskuze: Binding WPF, problém

C# .NET .NET (C# a Visual Basic) Binding WPF, problém American English version English version

Avatar
cest123
Člen
Avatar
cest123:

Ahoj komunito

Již několik dnů se snažím přijít na chybu v mém bindingu s implementovaným INotify(taky nefunkčním). Snažím se udělat hru AZ-Kvíz, a chci do hlavního okna vypisovat jméno týmu, který je momentálně na tahu, již mi funguje tahování v pozadí, ovšem jsem i přes to že mám všechny třídy nastavení na public, instanci třídy, která obsahuje vlastnost mám v Data contextu nastavenou při konstruktoru okna, samozřejmě mám nastavený binding i v XAML.

Pokud má někdo čas a náladu na pomoc, přikládám odkaz na stažení/prohlídnutí programu:
https://onedrive.live.com/?…

Budu samozřejmě rád i za nějakou tu kritiku na fungování programu samotného, ikdyž je ještě ve poměrně nedodělaé verzi

 
Odpovědět 13.10.2014 16:59
Avatar
Petr Nymsa
Redaktor
Avatar
Odpovídá na cest123
Petr Nymsa:

Nechce se mi nic stahovat, pošli kód kusu XAML a tu třídu přímo sem

Nahoru Odpovědět 13.10.2014 17:11
Pokrok nezastavíš, neusni a jdi s ním vpřed
Avatar
cest123
Člen
Avatar
cest123:
   public class Spravce: INotifyPropertyChanged
    {
        public Tym dalsiTymNatahu;
        public event PropertyChangedEventHandler PropertyChanged;
        public void OnPropertyChanged(string name)
        {
            if (PropertyChanged != null)
                PropertyChanged(this, new PropertyChangedEventArgs(name));
        }

        public Spravce()
        {
            tymy[0] = new Tym(Brushes.Blue, "Modří", true);
            tymy[1] = new Tym(Brushes.Red, "Červení", false);
            tymy[2] = new Tym(Brushes.Black, "Černí-Špatní", false);
            dalsiTymNatahu = tymy[0];
            OnPropertyChanged("dalsiTymNatahu");
        }
}

    public class Tym
    {
        string jmeno;
        public bool naTahu;
        public SolidColorBrush barvaTýmu;

        public Tym(SolidColorBrush brush, string jmeno, bool zacatek)
        {
            naTahu = zacatek;
            barvaTýmu = brush;
            this.jmeno = jmeno;
        }
        public override string ToString()
        {
            return jmeno.ToString();
        }
    }

    public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();
            DataContext = this.spravce;
        }
        public Spravce spravce = new Spravce();
    }
<TextBlock MinWidth="50" Padding="2" FontWeight="Bold" Text="{Binding dalsiTymNatahu}" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" />
Editováno 13.10.2014 17:25
 
Nahoru Odpovědět 13.10.2014 17:24
Avatar
Odpovídá na cest123
sadlomaslox25:
  1. Bindovani nejde protoze binding je jen pro Properties.
  2. OnpropertyChange byva vetsinou soucasti seteru te property.
  3. Pokud pouzivas novejsi .NET frameworku prejdi na CallerMemberName http://www.refactorthis.net/…tribute.aspx
  4. Nepouzivej diakritiku v nazvech trid a promenych
  5. Tohle urcite neni dobry napad:

    Otazky[0, 0] = tbo_A.Text;

    Otazky[0, 1] = tbr_A.Text;

    Otazky[1, 0] = tbo_B.Text;

    Otazky[1, 1] = tbr_B.Text;

    Otazky[2, 0] = tbo_C.Text;

    Otazky[2, 1] = tbr_C.Text;

  6. Na toceni teamu bych vyuzil tridu stack nebo queue.
  7. Goto neni moc dobry napad pouzivat.
 
Nahoru Odpovědět 13.10.2014 20:34
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 5 zpráv z 5.