| Autor |
Beitrag |
Raorkon
      
Beiträge: 86
Erhaltene Danke: 1
|
Verfasst: Di 19.07.11 22:14
Hallo zusammen,
ich habe in einen Stackpanel über den Code ein Image hinzugefügt. Soweit funktioniert das auch, allerdings möchte ich in einer weiteren Methode dieses Image bearbeiten. Leider finde ich das Control dann nicht, komischerweise wenn ich das Stackpanel-Control mir im Debugger anschaue dann finde ich das Image und kann auch den Name sehen, was mach ich falsch?
XML-Daten 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17:
| <Window x:Class="FS_Test2.Window1" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Title="Window1" Height="301" Width="292" Loaded="Window_Loaded" Initialized="Window_Initialized" WindowState="Maximized" Drop="photoPanel_Drop" AllowDrop="True"> <DockPanel AllowDrop="True"> <StackPanel Name="main" DockPanel.Dock="Top" Drop="photoPanel_Drop" AllowDrop="True" ClipToBounds="True" Visibility="Visible" DragEnter="main_DragEnter"> <Menu> <MenuItem Header="{DynamicResource File}"/> <MenuItem Header="{DynamicResource Help}"/> </Menu>
</StackPanel> </DockPanel> </Window> |
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33:
| private void ZoomSlider_ValueChanged(object sender, RoutedPropertyChangedEventArgs<double> e) {
double value = e.NewValue;
Image test = main.FindName("image") as Image; ... }
private void photoPanel_Drop(object sender, DragEventArgs e) { ... Image img = new Image();
img.Source = bitmap; img.Name = "image"; img.Width = bitmap.Width;
img.Height = bitmap.Height;
Point p = e.GetPosition(photopanel);
img.Margin = new Thickness(0, 0, 0, 0); img.VerticalAlignment = VerticalAlignment.Center; img.AllowDrop = true;
main.Children.Add(img); } |
|
|
Kha
      
Beiträge: 3803
Erhaltene Danke: 176
Arch Linux
Python, C, C++ (vim)
|
Verfasst: Mi 20.07.11 11:54
Du speicherst die Instanz einfach in einem Klassenfeld  ?
_________________ >λ=
|
|
Raorkon 
      
Beiträge: 86
Erhaltene Danke: 1
|
Verfasst: Mi 20.07.11 18:45
hmm finde ich irgendwie unschön 
|
|
Raorkon 
      
Beiträge: 86
Erhaltene Danke: 1
|
Verfasst: Mi 20.07.11 19:03
so hab die Lösung, wenn man dynamisch Controls hinzufügt muss mann diese auch registrieren
C#-Quelltext 1: 2:
| NameScope.SetNameScope(this, new NameScope()); RegisterName(img.Name, img); |
und schon kann man den kram auch finden, dank dir trotzdem
|
|
Kha
      
Beiträge: 3803
Erhaltene Danke: 176
Arch Linux
Python, C, C++ (vim)
|
Verfasst: Do 21.07.11 12:29
|
|
Raorkon 
      
Beiträge: 86
Erhaltene Danke: 1
|
Verfasst: Do 21.07.11 12:36
kannte ich bisher noch nicht den Begriff aber finde ich immer noch unschön in diesem zusammenhang.
Denn wenn ich mehrere Pics einfügen will/lasse stehe ich dabei schon vor einen Problem
|
|
Kha
      
Beiträge: 3803
Erhaltene Danke: 176
Arch Linux
Python, C, C++ (vim)
|
Verfasst: Do 21.07.11 14:31
Und die Lösung lautet List<Image>.
Bzw. ist es in WPF grundsätzlich unschön bzw. unnötig, jemals im Code-Behind Controls zu erstellen. Data Binding mit Templates ist so elegant, dass man nie mehr zurück möchte  .
_________________ >λ=
|
|
Raorkon 
      
Beiträge: 86
Erhaltene Danke: 1
|
Verfasst: Do 21.07.11 15:43
aber ich seh keine Möglichkeiten dynamisch unterschiedliche Bilder oder ähnliches einzufügen und dazu entsprechende unterschiedliche Kontexmenüns hinzuzufügen. Und die Möglichkeit des Code-Behind wurde mir in einen Fachbuch empfohlen. Daher habe ich diese Möglichkeit genutzt. Mit Templates habe ich mich noch nicht wirklich auseinander gesetzt (steht zwar im Buch, aber hatte noch keine Zeit das Kapitel zu lesen)
|
|
Kha
      
Beiträge: 3803
Erhaltene Danke: 176
Arch Linux
Python, C, C++ (vim)
|
Verfasst: Do 21.07.11 17:18
Raorkon hat folgendes geschrieben : | | aber ich seh keine Möglichkeiten dynamisch unterschiedliche Bilder oder ähnliches einzufügen und dazu entsprechende unterschiedliche Kontexmenüns hinzuzufügen. |
War das auf die Klassenfelder oder Data Binding bezogen? Es funktioniert jedenfalls beides, aber ja, für den Anfang ist es nicht schlimm, im Code-Behind - quasi nach Winforms-Art - zu programmieren, die WPF-Lernkurve ist schon steil genug.
_________________ >λ=
|
|
Raorkon 
      
Beiträge: 86
Erhaltene Danke: 1
|
Verfasst: Sa 23.07.11 22:24
bezogen auf das Databinding
|
|