Laden...

Auf Control im DataTemplate zu greifen

Erstellt von Taladan vor 15 Jahren Letzter Beitrag vor 15 Jahren 1.750 Views
Taladan Themenstarter:in
582 Beiträge seit 2008
vor 15 Jahren
Auf Control im DataTemplate zu greifen

Ich nutze ein DataTemplate um mehrere Objecte in einer Listbox an zu zeigen. So weit so gut. Doch nun möchte ich gern auf eines der generieten Controls zu greifen. Und zwar eine Textbox des selektierten eintrags. Nur habe ich keine Ahnugn wie ich das machen kann.

bei Base.FindName findet er nichts. 😦.
ListBox.SelectedItem gibt nur das gebundene Object nicht Container wider.
ItemContainerGenerator.ContainerFromIndex bleibt ebenfalls ohne Erfolg...

Gruß dat Tala

3.430 Beiträge seit 2007
vor 15 Jahren

Hi,

du kommst so an die Controls eines Templates ran


Button b = base.GetTemplateChild("Button3") as Button;

Gruss
Michael

Taladan Themenstarter:in
582 Beiträge seit 2008
vor 15 Jahren

Das scheint bei einen Datatemplate innerhalb einer Listbox oder ähnlichen Auflistung nicht zu funktionieren. Zumal das Control ja auch mehrmals vorhanden ist.

Gruß dat Tala

3.430 Beiträge seit 2007
vor 15 Jahren

Das scheint bei einen Datatemplate innerhalb einer Listbox oder ähnlichen Auflistung nicht zu funktionieren. Zumal das Control ja auch mehrmals vorhanden ist.

Sorry, das habe ich ganz überlesen.

Ich habe soetwas ähnliches mal vor kurzem gemacht. Und zwar habe ich bei ein spezielles TabControl erstellt. Dabei hat jedes TabItem ein Icon-Property und das normale HeaderProperty.

Das ist das modifizierte TabItem, das auch über das Icon-Property verfügt.


	public class MgTabItem : TabItem
	{
		static MgTabItem()
		{
			DefaultStyleKeyProperty.OverrideMetadata(typeof(MgTabItem), new FrameworkPropertyMetadata(typeof(MgTabItem)));
		}
		
		public override void OnApplyTemplate()
		{
			base.OnApplyTemplate();		
		}

		#region Public Properties

		/// <summary>
		/// Das Icon des TabItems
		/// </summary>
		public Image Icon
		{
			get { return (Image)GetValue(IconProperty); }
			set { SetValue(IconProperty, value); }
		}

		public static readonly DependencyProperty IconProperty = DependencyProperty.Register("Icon", typeof(Image), typeof(MgTabItem));

		#endregion		
	}

Dieses kann man dann einfach dem TabControl hinzufügen und dann auf die Icon-Eigenschaft des TabItems einfach zugreifen.

Das müsste mit der Listbox ganz ähnlich funktionieren.
Indem du einfach von ListBoxItem anstatt TabItem ableitest.
Dann kannst du hier die Eigenschaft hinzufügen die du brauchst.

Ich hoffe, dass dir das ein bisschen weiterhilft

Gruss
Michael