Jak zrobić, żeby w aplikacji w WPF zrobić jakieś okienko które by wyświetlało mi informacje jak w konsoli? Czy da się wysłać jakieś wiadomości do np. TextBox'a w XAMLu by na bieżąco wyświetlało mi nowe informacje które będą się działy? Albo jak się nazywa taki odpowiednik i pod jaka nazwą powinienem szukać?
- bieżąco
- po prostu dodajesz nową linijkę tekstu na końcu textboksa.
Jak nową linjkę? Mógłbyś to rozjaśnić? Chcę, żeby się aktualizowało cały czas, bo będzie tam często się zmieniać wiadomość, nie chcę jakiejś konkretnej informacji, tylko powiedzmy jedna się zakończy i dalej coś powinno być wyświetlone, zależnie od tego co zdecyduje użytkownik.
Jeżeli zależy ci na logowaniu deweloperskim to możesz w ustawieniach projektu zaznaczyć output type na Console Application, i wyświetlać tekst zwykłem Console.WriteLine("jakaś wiadomość");
A jeżeli na czymś bardziej delikatnym to tak jak @Azarien dajesz zwykłą kontrolkę TextBlock i przypisujesz jej tekst, link do dokumentacji: https://msdn.microsoft.com/pl-pl/library/system.windows.controls.textblock.text(v=vs.110).aspx
To może jeszcze inaczej przykładowo mam w XAMLu "Label" teraz jak się w programie do tego odnieść, żeby tam mi ustawiało to co napisze w kodzie?
W XAMLu mam coś takiego
<Label x:Name="myLabel" Content="" HorizontalAlignment="Left" Height="195" Margin="90,34,0,0" VerticalAlignment="Top" Width="612" />
W kodzie:
Label myLabel = new Label();
myLabel.Content = "tekst";
Czegoś tutaj brakuje?
To zależy czy chcesz korzystać z MVVM czy z Code Behind. Jeżeli MVVM to musisz się zapoznać z czymś takim jak chociażby interfejs INotifyPropertyChanged i binding w xmalu. Jeżeli korzystasz z Code Behind to możesz wykorzystywać wszystkie zmienne które definiujesz w xamlu - tak jak to zrobiłeś wyżej
x:Name="MyLabel"
albo
Name="MyLabel"
Tylko że w kodzie nie tworzysz nowych obiektów. One są tworzone w czasie inicjalizacji okna w metodzie InitializeComponent() <- jak dobrze poszukasz to znajdziesz ją, ale nie jest Ci ta wiedza na razie potrzebna. Żeby ustawić jakiś tekst spróbuj:
myLabel.Contet = "jakiś tekst";
ale bez przypisywania obiektu do myLabel.