• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Przesyłanie kontrolek do innego pliku WPF C#

Object Storage Arubacloud
0 głosów
209 wizyt
pytanie zadane 12 marca 2019 w C# przez seba Dyskutant (8,900 p.)
zmienione kategorie 12 marca 2019 przez criss

Witam, mam taki dylemat.

Mam 3 pliki "MainWindow.xaml.cs","MainWindow.xaml","Money.cs".

W pliku MainWindow.xaml stworzyłem labelka dajmy na to o nazwie XYZ.

Z pliku MainWindow.xaml chciałbym wysłać tego labelka do metody w pliku Money.cs abym mógł tam na nim wprowadzać zmiany. Nie potrafie tego zrobić. Oto kod jaki próbowałem zrobić.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Reflection.Emit;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;

namespace ExchangeModel
{
  
    public class Money
    

        public void Labelki(Label m)
        {
            m.Content="Hej labelku"
        }


    }
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
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;
using ExchangeModel;

namespace MoneyExchange
{
  
    public partial class MainWindow : Window
    {
       Money p1 = new Money();
       p1.Labelki(labelZPlikuMainXaml);
    }
}

Dostaje komunikat:Severity    Code    Description    Project    File    Line    Suppression State
Error    CS1503    Argument 1: cannot convert from 'System.Windows.Controls.Label' to 'System.Reflection.Emit.Label'    MoneyExchange   

 

3 odpowiedzi

0 głosów
odpowiedź 12 marca 2019 przez Siemił Mądrala (7,380 p.)
W komunikacie masz wszystko.

Kompilator myśli że przekazujesz jako parametr labelkę z 'System.Reflection.Emit' i nie potrafi jej zrzutować na 'System.Windows.Controls.Label'.

Z usingów skasuj 'using System.Reflection.Emit;' Albo użyj całej nazwy jako parametr metody System.Windows.Controls.Label.
komentarz 12 marca 2019 przez seba Dyskutant (8,900 p.)
Próbowałem ale to wtedy:

Severity    Code    Description    Project    File    Line    Suppression State
Error    CS0234    The type or namespace name 'Label' does not exist in the namespace 'System.Windows.Controls' (are you missing an assembly reference?)    ExchangeModel  

Error    CS0246    The type or namespace name 'Label' could not be found (are you missing a using directive or an assembly reference?)    ExchangeModel
0 głosów
odpowiedź 12 marca 2019 przez piotrsz109 Stary wyjadacz (13,730 p.)

Pierwsza rzecz, to metody można wywoływać tylko wewnątrz innej metody.

Druga sprawa to w Money.cs

public void Labelki(System.Windows.Controls.Label m)
        {
            m.Content="Hej labelku"
        }

Jest to kwestia tego, że zaimportowałeś klasę Label z dwóch różnych bibliotek i kompilator nie wie, który chciałeś i nie wie jakiego użyć.

0 głosów
odpowiedź 12 marca 2019 przez Ilmefy Obywatel (1,950 p.)
Fajnym rozwiązaniem jest stworzenie zmiennej statycznej w klasie mainwindow i przypisanie do niej głównego okna. Robisz to tak:

Mainwindow instance; a następnie w initialize dajesz instance=this;

Później w innych plikach odwołujesz się następująco: mainwindow.instance.(twoj label). content

Podobne pytania

0 głosów
1 odpowiedź 255 wizyt
pytanie zadane 29 sierpnia 2016 w C# przez jankustosz1 Nałogowiec (35,880 p.)
+1 głos
1 odpowiedź 5,975 wizyt
pytanie zadane 18 sierpnia 2016 w C# przez jankustosz1 Nałogowiec (35,880 p.)
0 głosów
1 odpowiedź 450 wizyt
pytanie zadane 21 kwietnia 2017 w C# przez BlackMoon Obywatel (1,730 p.)

92,539 zapytań

141,382 odpowiedzi

319,477 komentarzy

61,928 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...