Nie zgadzam się z dwoma innymi odpowiedziami tutaj. Nie ma potrzeby dodawania siatki do zawijania zawartości. Panel sterujący jest wystarczający.
W pliku xaml dodaj panel sterujący do miejsca, w którym ma się znaleźć zawartość.
<StackPanel Name="myStack" Orientation="Horizontal"></StackPanel>
Następnie w kod tyłu, jak w obsługi przycisku lub po załadowaniu window Dodaj ten
Image coolPic = new Image() {
Name="pic",
Source = new BitmapImage(new Uri("pack://application:,,,/images/cool.png")),
Stretch = Stretch.None // this preserves the original size, fill would fill
};
TextBlock text = new TextBlock() {
Name = "myText",
Text = "This is my cool Pic"
};
myStack.Children.Add(coolPic); // adding the pic first places it on the left
myStack.Children.Add(text); // the text would show up to the right
Można zamienić położenie obrazu i tekstu, dodając tekst pierwszy wówczas obraz.
Jeśli nie widzisz obrazu zapewniają build działanie obrazie jest ustawiony do zasobów w oknie właściwości obrazu.
Aby kod był bardziej użyteczny lub bardziej dynamiczny, potrzebny byłby sposób zmiany tekstu lub obrazu.
Więc powiedzmy, że chciał zmienić te i iść dalej i zrobić
((TextBlock)FindName("myText")).Text = "my other cool pic";
Można by oczekiwać, że tekst ma być zmieniony, ale co się dzieje?
Object reference not set to an instance of an object.
Drats ale ja dałem to nazwisko. Musisz dodać:
// register the new control
RegisterName(text.Name, text);
Aby uzyskać dostęp do bloku tekstowego później. Jest to potrzebne, ponieważ dodano kontrolę do struktury po jej zbudowaniu i wyświetleniu.Tak więc ostateczny kod wygląda tak po zarejestrowaniu obrazu:
Image coolPic = new Image() {
Name="pic",
Source = new BitmapImage(new Uri("pack://application:,,,/images/cool.png")),
Stretch = Stretch.None // this preserves the original size, fill would fill
};
// register the new control
RegisterName(coolPic.Name, coolPic);
TextBlock text = new TextBlock() {
Name = "myText",
Text = "This is my cool Pic"
};
// register the new control
RegisterName(text.Name, text);
myStack.Children.Add(coolPic);
myStack.Children.Add(text);
Odpowiedź Greate !! – CharlieShi