Diskuze: Kliknutí v Gridu - WPF

C# .NET .NET (C# a Visual Basic) Kliknutí v Gridu - WPF American English version English version

Avatar
Petr Valigura
Redaktor
Avatar
Petr Valigura:

Čau, dělám aplikaci, kde mám grid. V code behind si pak vytvořím sloupce a řádky, jednotlivé "buňky této tabulky" pak naplním obrázky. To co bych potřeboval, je to, že když kliknu na nějaký obrázek, tak ten obrázek, na který jsem kliknul se změní na jiný.

Jak by se to dalo nejlépe řešit? :)

Odpovědět 9. července 17:02
Občas je to tady dobrá klauniáda...
Avatar
Adam Ježek
Tým ITnetwork
Avatar
Adam Ježek:

Odchytni MouseDown event pro grid.

private void myGrid_MouseDown(object sender, MouseButtonEventArgs e)
{
    Point p = e.GetPosition(this);
    double x = p.X;
    double y = p.Y;
}

Tím získáš souřadnice kliknutí na gridu. Z vlastností Height a Width gridu zjistíš jeho rozměry, ty vydělíš počtem řádků/sloupců a získáš výšku/šířku jednotlivých buněk. Tou pak vydělíš x a y souřadnice z kliknutí a po ignorací desetinné části získáš číslo řádku/sloupce. Pak to změníš stejně, jako tam nastavuješ obrázek na začátku.

Akceptované řešení
+20 Zkušeností
+1 bodů
Řešení problému
Nahoru Odpovědět 9. července 17:36
Pokud chceš odpovědět, klikni na odpovědět. Pokud chceš vložit zdroják, klikni na vložit zdroják (</>)
Avatar
Petr Valigura
Redaktor
Avatar
Odpovídá na Adam Ježek
Petr Valigura:

Super, tohle vypadá jako přesně to co potřebuji :) Díky

Nahoru Odpovědět 9. července 18:17
Občas je to tady dobrá klauniáda...
Avatar
ostrozan
Redaktor
Avatar
Odpovídá na Petr Valigura
ostrozan:

Může to být i nohem jednodušší - předpokládám, že obrázky máš "Image"

private void myGrid_MouseDown(object sender, MouseButtonEventArgs e)
{
  Image img = e.Source as Image;
  img.Source = new BitmapImage(new Uri("novyobrazek.jpg"));
}

a nemusíš nic krkolomně zjišťovat a přepočítávat :-)

 
Nahoru Odpovědět  +1 10. července 22:17
Avatar
Petr Valigura
Redaktor
Avatar
Odpovídá na ostrozan
Petr Valigura:

Tohle je dle mého asi nejlepší řešení problému, který jsem výše popsal :) ... zapomněl jsem tam, ale napsat, že k tomu mám vytvořené dvourozměrné pole, které v podstatě odpovídá tomu gridu, a potřebuju tu hodnotu změnit i v něm. Takže tohle mi asi moc nepomůže. Ale upřímně, jsem vůbec netušil, že změnění obrázku, jde udělat takto elegantně :) a donutilo mě se podívat, co vlastně sender a MouseButtonEven­tArgs všechno nabízí. Takže díky moc :) ... tohle je tady na fóru super, lidi tady poradí nejen řešení problému, ale poskytnou inspiraci a rady na co se dál podívat :)

Nahoru Odpovědět  +1 10. července 22:51
Občas je to tady dobrá klauniáda...
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.