WPF - pierwsza aplikacja - text + Bindowanie

WPF - pierwsza aplikacja - text + Bindowanie
PO
  • Rejestracja:ponad 9 lat
  • Ostatnio:około 7 lat
  • Postów:92
0

Zaczynam dopiero przygodę z WPF, mam oto taki fragment kodu:

Kopiuj
<TextBox x:Name="textBox"  Grid.Column="1" Grid.Row ="3" Text="{Binding Address}" Margin="0,5,0,-5" HorizontalAlignment="Left" Width="119" IsEnabled="False"> </TextBox>

W jaki sposób mogę zrobić tak by w textBoxie "textBox" obok zbindowanego adresu wyświetlał się dowolny tekst? Na przykład "Adres to" i dopiero zbindowana wartość?

NeuroXiq
  • Rejestracja:prawie 9 lat
  • Ostatnio:około 5 lat
  • Lokalizacja:Racibórz
  • Postów:101
0

Obok tego możesz po prostu dać jakiś textblock albo we właściwości Address dać po prostu coś takiego:

Kopiuj
Address {get{ return $"Adres to: {address}" } {set ... }} ;)
edytowany 2x, ostatnio: NeuroXiq
neves
  • Rejestracja:prawie 22 lata
  • Ostatnio:około 3 godziny
  • Lokalizacja:Kraków
  • Postów:1114
0

Możesz to osiągnąć używając properta StringFormat:

Kopiuj
<TextBox x:Name="textBox"  Grid.Column="1" Grid.Row ="3" Text="{Binding Address, StringFormat='Adres to: {0} ' }" Margin="0,5,0,-5" HorizontalAlignment="Left" Width="119" IsEnabled="False"> </TextBox>

PO
  • Rejestracja:ponad 9 lat
  • Ostatnio:około 7 lat
  • Postów:92
0

A mam jeszcze jedno pytanie - Wykorzystałem gotowy kod na GitHub https://github.com/wpitek/mvvvm-tutorial/tree/MvvmPattern

Załóżmy , że w MainWindow.xaml dodałem jakiegos textBoxa , dajmy na to textBoxXY. Chicałbym w klasie MainWindowViewModel w metodzie SayHiExcute zamiast wypisać

Kopiuj
  MessageBox.Show(string.Format("Hi {0} {1}!", _person.FirstName, _person.LastName));

wypiasć w texcie textBoxaXY "My First name is: " + _person.FirstName + " " + _person.LastName.

Kopiuj
Kiedy tworzę instancję MainWindow i odwołuje się do tego textBoxa otrzymuję błąd - tak jakby obiekt był pusty. Możecie pokazać jak mogę objeść ten problem? Może moje pytania są trywialne, ale dopiero zacząłem przygodę z WPF i do tej pory korzystałem z Javy, a w C# jedynie z aplikacji konsolowych. Z góry dzięki :)
NE
  • Rejestracja:ponad 9 lat
  • Ostatnio:około 8 lat
  • Postów:186
1

Pytania może i są trywialne, ale przede wszystkim opis trochę chaotyczny. Żeby zmienić zawartość kontrolki w widoku, musisz zmienić wartość właściwości, z której ta kontrolka korzysta. Czyli dodajesz właściwość np. FullName i wewnątrz tej metody przypisujesz FullName = "My First name is: " + _person.FirstName + " " + _person.LastName. Oczywiście, ta właściwość musi mieć w środku OnPropertyChanged. Wtedy w widoku robisz <TextBox Text="{Binding FullName}" /> i powinno działać.


(konto nieaktywne)

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.