Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

  • »
  • Portal
  • |
  • Mitglieder
Beiträge von m.grauber
Thema: WPF Combobox manuell oder per Code umgeschalten?
Am im Forum: GUI: WPF und XAML

Hallo Xalir,

das ist bislang auch meine Lösung. Leider ist es nicht besonders elegant und wenn man später einmal mit mehreren Threads arbeitet, kann es sein, dass es zwischendurch umgeschalten wird.

Ich kenne es von anderen Programmiersprachen, dass es dort dafür sogar zwei unterschiedliche Events gibt.

Gibt es vielleicht noch Ideen? Hat das Microsoft vergessen?

Besten Dank!

Thema: WPF Combobox manuell oder per Code umgeschalten?
Am im Forum: GUI: WPF und XAML

Hallo,

wie löst ihr es, wenn ihr im ComboBox.SelectionChanged wissen wollt, ob das SelectionChanged ausgelöst wurde,

-> indem der Benutzer einen anderen Wert ausgewählt hat oder ob
-> es ausgelöst wurde, weil sich die Daten im Code geändert haben.

Sowohl in sender als auch e habe ich kein Unterschied feststellen können.

Besten Dank!

Thema: Aus WPF Template Code Behind starten
Am im Forum: GUI: WPF und XAML

Hallo Xalir,

vielen Dank! Das ist wirklich Top! und wäre sicher die Lösung!!!

Leider habe ich wieder einmal einen Sonderfall:

Erstens ist x:Key im Style und nicht im darunter liegendem ControlTemplate definiert. (Im darunter liegendem ControlTemplate darf ich daher leider kein Key mehr vergeben).

Zweitens hatte ich x:Key="{x:Type ContextMenu}" gesetzt, damit es für alle ContextMenüs gilt. Sobald ich hier einen Name zuweise, müsste ich bei jedem ContextMenü im Programm den Style angeben.

Drittens habe ich einmal versucht, dann den Style trotzdem zu benennen und dann im Codebehind nach Style zu casten. Doch dieser Style hat leider kein .LoadContent() (oder etwas ähnliches) - Hier könnte man aber evtl. mit Trigger arbeiten.

Also ist nun zum Fortfahren derzeit das größte Problem, wie greife ich nun aus dem Codebehind auf den Style zu, wenn er mit x:Key="{x:Type ContextMenu}" bezeichnet ist? Ich habe bereits versucht eine Instanz des ContextMenüs zu bilden und dann mit .Style meinen Style auszulesen. Dieser ist aber immer null.

Besten Dank!

Thema: Aus WPF Template Code Behind starten
Am im Forum: GUI: WPF und XAML

Hallo Erfinder des Rades,

vielen Dank für den Tipp! Ich habe inzwischen in die Richtung probiert, daß wird aber etwas aufwendiger. Da ich es bei allen ContextMenüs im Loaded ausführen möchte, gibt es evtl. noch einen anderen Weg:

Wie "abonniere" ich das Loaded des Standard-Context-Menüs (ohne es abzuleiten)?

Mit ContextMenu.Loaded += ... geht das ja nicht.

Mein Code sollte dann bei jedem erstellen eines neuen ContextMenüs abgearbeitet werden.

(Mein Template kann dann einfacher bleiben und muss das nicht berücksichtigen)

Wie klappt das dann?

Besten Dank!

Thema: Aus WPF Template Code Behind starten
Am im Forum: GUI: WPF und XAML

Hallo,

in einem XAML-Template eines Contextmenüs, möchte ich dafür sorgen, dass beim Loaded aller Contextmenüs zukünftig ein Code Behind ausgeführt wird:


<Style x:Key="{x:Type ContextMenu}" TargetType="{x:Type ContextMenu}">
  <Setter Property="Template">
    <Setter.Value>
        <ControlTemplate TargetType="{x:Type ContextMenu}">
            <ControlTemplate.Triggers>
                <EventTrigger RoutedEvent="Loaded">
                      <!-- Hier meinen Code Behind aufrufen: MyLoaded() -->
                </EventTrigger>
             </ControlTemplate.Triggers>
...

Nur was muss in dieser Zeile stehen? Und falls das nicht über das Template geht, welchen Code benötige ich in C#?

Es soll ein allgemeingültiges ContentMenu-Template bleiben.

Besten Dank!

Thema: [erledigt] WPF: Äußerstes Grid ermitteln
Am im Forum: GUI: WPF und XAML

Hallo Sarc,

vielen Dank für die schnelle Hilfe

Diese Methode hatte ich auch schon in der Mache. Also gibt es keinen kürzeren Weg á la MainGrid() etc.

Ok. Dann wirds so gemacht.

Besten Dank!

Thema: [erledigt] WPF: Äußerstes Grid ermitteln
Am im Forum: GUI: WPF und XAML

Hallo,

ich möchte das äußerste Grid in einem WPF-Window ermitteln. Den Namen habe ich leider nicht, da er immer anders lauten kann. In jedem Fenster verwende ich aber ein solches Grid.

mein Fenster steht im Parameter "object sender".


Window MeinFenster = (Window)sender;

VS gibt ja bereits in jedem Grid ein Fenster vor. Ich hoffe nun, dass ich irgendwie über MeinFenster auf das erste (äußerste) Grid komme. Nur wie?

1. Muss ich wahrscheinlich statt nach Window zu casten ein Interface benutzen?

2. Wie muss eine Methode LiefereAeusserstesGrid() lauten? - Ich habe da überhaupt keinen Ansatz. Ich vermute es muss eine Zeitaufwändige Sache über FindVisualChildren sein? Doch woher weiss ich, welches Grid das äußerste ist?

Danke für Eure Mühe!

Thema: [erledigt] Binding auf mein Hauptfenster
Am im Forum: GUI: WPF und XAML

Hallo,

bin nicht weitergekommen und habe es nun ohne Binding gemacht.

Danke trotzdem

Thema: [erledigt] Binding auf mein Hauptfenster
Am im Forum: GUI: WPF und XAML

Hallo,

in einem anderen Fenster muss ich mit ElementName auf mein Hauptfenster referenzieren. Er findet aber MeineForm nicht, da sie nur im Hauptfenster mit Name="MeineForm" definiert ist.

Thema: [erledigt] Binding auf mein Hauptfenster
Am im Forum: GUI: WPF und XAML

Hallo,

ich habe im Hauptfenster (was immer geöffnet ist) eine DependencyProperty. Mir ist klar, wie ich im XAML im gleichen Fenster auf diese DependencyProperty zugreife.

Nur wie kann ich im XAML Code eines anderen Fensters auf die DependencyProperty des Hauptfensters zugreifen (oder wo muss ich die DP hinpacken, dass ich von anderen Forms darauf zugreifen kann?


...={Binding ElementName=MeineForm, Path=MeineProperty}

Es sollte halt schon ein XAML Einzeiler sein.

Thema: [erledigt] WPF: Combobox und SelectionChanged und Text
Am im Forum: GUI: WPF und XAML

Hallo Console32!

Dann nochmals vielen Dank! Dann werde ich so arbeiten.

Winterliche Grüße

Thema: [erledigt] WPF: Combobox und SelectionChanged und Text
Am im Forum: GUI: WPF und XAML

Hallo Console 32,

Vielen Dank! Durch das Binding gibt es das Objekt. Natürlich kann ich das Casten und erhalte dann Zugriff auf den Namen, der auch angezeigt wird. Doch muss ich immer so vorgehen? Das ist doch schon eine seltsame Verhaltensweise zwischen SelectionChanged und dem Inhalt von .Text?

Aber wenn es so sein muss, werde ich das natürlich wieder Casten und es passt. Ich gehe halt lieber den direkten und weniger rechenintensiven Weg.

Beste Grüße!

Thema: [erledigt] WPF: Combobox und SelectionChanged und Text
Am im Forum: GUI: WPF und XAML

Hallo,

In einer einfachen WPF Combobox greife ich im SelectionChanged auf den Text der Combobox zu. Dort steht aber immer noch der alte Text drinnen:


<Combobox .... SelectionChanged="Combobox_SelectionChanged_1"


private void Combobox_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
    MessageBox.Show(Combobox.Text);
}

- Warum wird dort noch nicht bereits der neue Text angezeigt? (Die Methode heißt doch "SelectionChanged" und nicht "BeforeSelectionChanged"?

- Wie kann ich bereits auf einfachste und schnelle Weise den neuen Text anzeigen? Nutzt ihr ein anderes Event o. a.? (Ich rufe im SelectionChanged eine weitere allgemeingültige Methode auf; daher bitte nicht e.AddedItems[0]... vorschlagen. Ich muss von dieser externen Methode auf "Combobox.Text" zugreifen, da es dort kein e gibt).

- Warum schreibt VS 2012 bei jeder automatisch generierten Methode "_1" ans Ende? - Unter VS 2010 war das noch nicht so. Ändert ihr das jedes Mal?

Besten Dank!

Thema: Schnittstelle, Interface und Instanz eines Objekts
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Hallo kleiner Tomy,

Auch Dir lieben Dank! Leider nicht. Dort wird schon richtig Instanziiert:


Objekt oob = new Objekt();
return oob

aber sobald es aus der Methode raus geht, sage ich folgendes:


Mein_Fenster.Mein_Interface.Obj = Erstelle_Mein_Obj();

An dieser Stelle vermute ich das Problem.

Da es Mein_Fenster.Mein_Interface.Obj ja einfach zugewiesen wird, statt eine neue Instanz zuzuweisen. Ich vermute daher, dass irgentetwas durch die Schnittstelle anders läuft und durch die Schnittstelle evtl. irgend ein "vorheriger" Wert (der in einem ganz anderen Fenster gesetzt wird) überschrieben wird.

Aber wenn das bei Schnittstellen nicht passieren kann; mit was ich eigentlich rechne, dann teilt es mir bitte mit. Es muss dann noch etwas anderes sein.

Bin noch immer nicht weiter damit.

Thema: Schnittstelle, Interface und Instanz eines Objekts
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Vielen Dank für die Hilfe!

Ich muss mich leider korrigieren und etwas ausholen:

Im Moment greife ich auf die Member aus dem Interface so zu:


public interface IMein_Interface
{
  Meine_Klasse meine_Klasse { get; set; }
}

public class Meine_Klasse
{
	public string Obj { get; set; }
}

(In Meine_Klasse befinden sich noch weitere Member.)

In der Form wird das Interface mit :IMeine_Klasse verwendet und mit...


public Meine_Klasse {get;set;}

...verwendet. Es wird also schon doch korrekt implementiert. Ich bin nur durch die "Unterklasse" durcheinander gekommen.

Dadurch erhöht sich die Übersichtlichkeit und ich kann mehrere Member in verschiedene "Bereiche" (d.h. Interfaces) gliedern, statt das dann auf alles nur mit this.Obj bzw. this.Obj2 zugegriffen wird.

==> Wie verhält es sich nun mit diesen "Unter-Membern" also z.B. Obj? Muss ich in der Form nun nicht nur das Interface definieren, sondern auch noch das Obj aus der Klasse des Interfaces?


Meine_Klasse.Obj=new Meine_Klasse();

Das mache ich bisher nur dann wenn ich diese mit abweichenden Werten benötige, was eine Menge Arbeit spart. Besonders, wenn ich neue Member benötige muss nichts nachgetragen werden.

Das Problem ist nun im Ansatz klar: Im Interface verweise ich auf eine Klasse, die ich aber nicht instanziiere. Wie kann ich das trotzdem nutzen? Und wurden meine Probleme dadurch verursacht?

Besten Dank!

Thema: Schnittstelle, Interface und Instanz eines Objekts
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Hallo Inflames!

Danke sehr für die schnelle Rückmeldung!

Ich habe es noch ergänzt.

Da das Interface in mehreren Forms verwendet wird, "haftet" scheinbar durch die letzte Zuweisung noch mein Objekt der zuletzt geöffneten Form drin und wird scheinbar überschrieben, da ich ja direkt einen neuen Wert mit = zuweise.

Mit der obersten Zeile wird das definitiv verhindert. Nur möchte ich diese Zeile nicht bei jedem öffnen des Fensters schreiben.

Ich habe es inzwischen mit einem einfacheren String Objekt getestet. Dort beeinflusst es sich nicht gegenseitig.

Ich benötige irgendwie eine Instanz.


Oder kann ich das Objekt Obj evtl. direkt im eigenen Objekt-Konstruktor von Obj instanziieren?


Besten Dank

Thema: Schnittstelle, Interface und Instanz eines Objekts
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Hallo,

In einem Interface "Mein_Interface" ist definiert:


public string Obj { get; set; }

Dieses Interface wird mit einer Form verwendet:


public partial class Mein_Fenster : Mein_Interface

ich sage nun im Load des Forms:


Mein_Fenster.Mein_Interface.Obj = new Obj();
Mein_Fenster.Mein_Interface.Obj = Erstelle_Mein_Obj();


Wie kann ich im Interface die Instanz erzeugen, damit ich mir die oberste Zeile im Load des Forms sparen kann: Mein_Fenster.Mein_Interface.Obj = new Obj();


(Jedes einzelne Fenster soll mit einer unterschiedlichen Instanz von Obj arbeiten, also je Fenster unterschiedliche Werte enthalten, die sich nicht gegenseitig beeinflussen.

Es handelt sich in Wirklichkeit nicht um einen string, sondern ein komplexeres Objekt (Referenztyp!), welches scheinbar durch das nachfolgend geöffnete Fenster überschrieben wird, wenn die derzeit oberste Zeile im Load fehlt.)

Einfach in den Konstruktor des Interfaces hineinschreiben wird ignoriert (das Interface ist ja nur der Bauplan). Das Init-des Interfaces zu abonnieren, wird leider auch ignoriert.

Es muss auch weiterhin ein Interface bleiben.

Besten Dank!

Thema: WPF Template - Code Behind ausführen
Am im Forum: GUI: WPF und XAML

Hallo Christian,

vielen Dank für Deine Mühe.

Wahrscheinlich bin ich völlig blöd , aber wohin soll ich das setzen

public override void OnApplyTemplate()
...

1. In allen WPF-Forms nutze ich die normalen WPF-ComboBox (ohne Ableitung!)

2. Alle WPF-Comboboxen werden durch das Template in meiner App.xaml beeinflusst:

<ControlTemplate x:Key="ComboBox" TargetType="{x:Type ComboBox}">
...

3. Ich möchte das SelectionChanged meines Templates abonieren - Damit soll mein gewünschter Code bei jedem SelectionChanged jeder Combobox ausgeführt werden - ohne dass dann nochmals je benutzter Combobox separaten Code bemühe.

Ich müsste dann beim Programmstart folgende Zeilen ausführen:

System.Windows.Controls.ComboBox combo = new System.Windows.Controls.ComboBox();
combo.SelectionChanged += combo_SelectionChanged;

dann könnte ich genau definieren, welcher Code ausgeführt werden soll. Leider wirkt sich dieser Code nur auf diese einzelne Combobox aus.

OnApplyTemplate könnte ich auch nur ausführen, wenn ich vorher eine Instanz einer Combobox habe. Ich habe aber nur ein Template:


<ControlTemplate x:Key="ComboBox" TargetType="{x:Type ComboBox}">

Nun habe ich mir auch schon System.Windows.FrameworkTemplate angesehen, komme aber nach Tagen leider noch immer nicht weiter.

Ich habe auch bereits versucht dem Template mit x:Name="" ein Namen zu geben und darauf zuzugreifen. Klappt leider auch nicht.

Bitte nochmals um Hilfe! Danke sehr!

Thema: WPF Template - Code Behind ausführen
Am im Forum: GUI: WPF und XAML

Hallo Christian,

ich habe mich sicherlich etwas falsch ausgedrückt. Ich habe auch durch sehr langes Suchen nichts gefunden, da ich auch nicht weiss, nach welchem Begriff ich suchen soll.

Mit dem EventTrigger wird beim SelectionChanged etwas ausgeführt. Das ist ok so und läuft.


<ControlTemplate x:Key="ComboBox" TargetType="{x:Type ComboBox}">
  <ControlTemplate.Triggers>
     <EventTrigger RoutedEvent="SelectionChanged">
       ...
     </EventTrigger>
  </ControlTemplate.Triggers>
</ControlTemplate> 


Ich möchte in meinem XAML-Code dieses SelectionChanged zusätzlich abonieren. Im Code Behind eines normalen Controls würde ich es so machen:


Combo.SelectionChanged += Combo_SelectionChanged;
void Combo_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
  ...
}


Da ich aber hier in einem Template bin, geht das so nicht.


Wie ist dafür die XAML-Syntax?

<ControlTemplate x:Key="ComboBox" TargetType="{x:Type ComboBox}">
  <ControlTemplate.Triggers>
     <EventTrigger RoutedEvent="SelectionChanged" += "{x:Static local:ComboTemplate_SelectionChanged}">
       ...
     </EventTrigger>
  </ControlTemplate.Triggers>
</ControlTemplate> 

Der Code soll wirklich für alle Controls ausgeführt werden, die dieses Template benutzen.

Vielen Dank!

Thema: WPF Template - Code Behind ausführen
Am im Forum: GUI: WPF und XAML

Hallo,

hat wirklich niemand eine Antwort? X(

Vielen Dank

Thema: WPF Template - Code Behind ausführen
Am im Forum: GUI: WPF und XAML

Hallo,

Für ein Control habe ich ein Template. Wie muss die XAML-Zeile aussehen, dass ich z. B. beim SelectionChanged Code-Behind ausführen kann?


<ControlTemplate x:Key="ComboBox" TargetType="{x:Type ComboBox}">
  <ControlTemplate.Triggers>
     <EventTrigger RoutedEvent="SelectionChanged">
       RunMyCSharpMethod()
     </EventTrigger>
  </ControlTemplate.Triggers>
</ControlTemplate>

Dieser Code soll bei jedem SelectionChanged jeder ComboBox ausgeführt werden und zwar bevor noch evtl. weiterer an das SelectionChanged angebundene Code ausgeführt wird.

Danke vielmals!

Thema: [erledigt] WPF: Combobox Template - Thickness aus Form ans Template weitergeben
Am im Forum: GUI: WPF und XAML

Hallo Christian,

vollkommen richtig! Es läuft nun. Ich hatte wirklich Tomaten auf den Augen 8)

Nun ist mir auch die Weiterleitung klar geworden.

Tausend Dank nochmals!

Grüße
Michael

Thema: [erledigt] WPF: Combobox Template - Thickness aus Form ans Template weitergeben
Am im Forum: GUI: WPF und XAML

Hallo Christian,

vielen Dank für die Hilfe! Darüber, dass das ein Control in einem anderen Control ist, habe ich auch schon nachgedacht. Ich dachte bisher aber immer "TemplatedParent" bezieht sich auf das gesamte ("äußere") Template.

Aber das "TemplatedParent" bezieht sich also nicht auf das gesamte ("äußere") angewandte Template sondern nur auf das jeweils übergeordnete?

Wenn es so ist, habe ich die von Dir beschriebene Zeile nochmals eingebaut:

Es kommt keine Fehlermeldung (es wird zumindest nichts angezeigt) aber ändern tut sich auch nichts. Ich leite so diesen Wert über die Combobox an den Toggle Button weiter?


<Style x:Key="{x:Type MyComboBox}" TargetType="{x:Type MyComboBox}">
...
<Setter Property="Template">
                <Setter.Value>
                    <ControlTemplate TargetType="{x:Type ComboBox}">
                        <Grid>
                           ...
<ToggleButton x:Name="ToggleButton" Template="{StaticResource ComboBoxToggleButton}" Grid.Column="2" Focusable="false" ClickMode="Press"
                                          IsChecked="{Binding IsDropDownOpen, Mode=TwoWay, RelativeSource={RelativeSource TemplatedParent}}" 
BorderThickness="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=BorderThickness}"/> 

Vielleicht muss ich noch etwas anderes beachten?
(Ich habs getestet: Die Weiterleitung an die Combobox klappt, die erneute Weiterleitung an den ToggleButton wird ignoriert)

Danke!

Thema: [erledigt] WPF: Combobox Template - Thickness aus Form ans Template weitergeben
Am im Forum: GUI: WPF und XAML

Hallo,

in <Application.Resources> habe ich u. a. folgendes Template für eine ComboBox erstellt:

Hier das Template für die eigentliche ComboBox:


<Style x:Key="{x:Type MyComboBox}" TargetType="{x:Type MyComboBox}">
...
<Setter Property="Template">
                <Setter.Value>
                    <ControlTemplate TargetType="{x:Type ComboBox}">
                        <Grid>
                           ...
<ToggleButton x:Name="ToggleButton" Template="{StaticResource ComboBoxToggleButton}" Grid.Column="2" Focusable="false" ClickMode="Press"
                                          IsChecked="{Binding IsDropDownOpen, Mode=TwoWay, RelativeSource={RelativeSource TemplatedParent}}"/>

Hier das Template für den von der ComboBox benötigten ToggleButton:

<ControlTemplate x:Key="ComboBoxToggleButton" TargetType="{x:Type ToggleButton}">
<Grid>
  ....
  <Border x:Name="Border" BorderThickness="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=BorderThickness}" 
   ...

Wenn ich nun eine ComboBox auf ein Fenster setze, klappt alles.

Wenn ich aber im Fenster für eine bestimmte Combobox die BorderThickness="5" setze, wird dies ignoriert. Ich möchte, dass die im Fenster bei der ComboBox eigegebene BorderThickness in das Template übergeben wird. Daher ist oben auch die Zeile "BorderThickness="{Binding RelativeSource..." drin.

Wie muss diese Zeile korrigiert werden?

Danke.

Thema: erledigt: Aus XAML-Ressource eine Methode im CodeBehind aufrufen
Am im Forum: GUI: WPF und XAML

Hallo xxxProd und Christian,

also dieses Control vom alten Kollegen ist wirklich des Wahnsinns. - Ich werde es nun selbst "nachbauen" und daher benötige ich nun keine Lösung mehr. Dann kann ich es an dieser Stelle auch anders lösen.

Vielen Dank nochmals.

Thema: erledigt: Aus XAML-Ressource eine Methode im CodeBehind aufrufen
Am im Forum: GUI: WPF und XAML

Hallo Christian,

auch Dir vielen Dank! Die Zeilen


<UserControl.Resources>
        <DataTemplate x:Key="MyTemplate">
            <local:MyUserControl/>
... 

"führen" in einer bestimmten Situation dazu, dass MyUserControl.xaml geladen wird.

Wie kann ich stattdessen MyMethode "laden", die sich im Codebehind befindet? - Theoretisch möchte ich nur diese eine Zeile ändern.

Aufgrund von xxxprod versuche ich es gerade mit DataTemplate.Triggers, bekomme es aber nicht hin.

Das UserControl ist leider geschlossen und der Kollege, der das programmiert hat, ist nicht mehr da. Auf jeden Fall wird immer dieses MyUserControl ausgeführt und das klappt derzeit ja auch. - Ich möchte nur eine andere Methode angeben, statt einem UserControl zu öffnen.

Ist vielleicht der Grund, warum der Kollege das damals so gemacht hat, dass es anders nicht geht? X( X(

Also mir ist klar, dass ich aus dem XAML-Code nicht auf Public oder Static Methoden zugreifen kann. Jedoch auf DependencyProperties. Leider klappt auch das nicht:

<UserControl.Resources>
        <DataTemplate x:Key="MyTemplate">
            <local:MyDependencyProperty/>
... 

(dabei ist MyDependencyProperty im aktuellen UserControl eine korrekt erstellte DependencyProperty. Dort könnte ich dann zumindest etwas abonieren).

Thema: erledigt: Aus XAML-Ressource eine Methode im CodeBehind aufrufen
Am im Forum: GUI: WPF und XAML

Hallo xxxprod,

das ist ein UserControl welches bei einer bestimmten Aktion dieses Template "auslöst". - Bitte nicht über meine seltsame Beschreibung lachen

Dabei wird MyUserControl erstellt. - Ich möchte aber statt der Zeile


   <local:MyUserControl/>

dass nicht das MyUserControl.xaml erstellt wird, sondern eine Methode im CodeBehind des gleichen Controls aufgerufen wird:

   <local:MyMethode/>             // geht natürlich nicht

Wie lautet die korrekte Syntax, um auf meine Methode zu verweisen?

Danke!

Thema: erledigt: Aus XAML-Ressource eine Methode im CodeBehind aufrufen
Am im Forum: GUI: WPF und XAML

Hallo,

im XAML habe ich folgenden Ressource-Code:


<UserControl.Resources>
        <DataTemplate x:Key="MyTemplate">
            <local:MyUserControl/>
...

So wird beim Aufruf zwar von MyUserControl.xaml (einem Usercontrol) eine neue Instanz gebildet und steht zur Verfügung.


Ich möchte aber an dieser Stelle stattdessen nur eine im CodeBehind definierte Methode ausführen. - Auf den DataContext möchte ich aber in der Methode trotzdem zugreifen; er muss also mit "übergeben" werden. Wie geht das?


Danke!

Thema: erledigt - WPF Abgeleitetes TabItem und Probleme mit Name
Am im Forum: GUI: WPF und XAML

Hallo Thorxx,

Danke für Deine schnelle Hilfe! - Ja, Du hast die englische Version mit der englischen Fehlermeldung - ich "leider" die Deutsche. Ich hatte schon ausführlich gesucht, aber auch keine richtigen Lösungen gefunden.

Da dies viele für einen Bug halten, werde dies im neuen VS2012 testen. Falls dann behoben ist es am besten, da ich dann nichts umbiegen muss.

Danke nochmals!

Thema: erledigt - WPF Abgeleitetes TabItem und Probleme mit Name
Am im Forum: GUI: WPF und XAML

Hallo,

ich habe mir ein eigenes TabItem abgeleitet. Derzeit ist noch kein Unterschied zum normalen TabItem ausprogrammiert.

Wenn ich in mein TabControl nun statt dem normalen TabItem mein eigenes TabItem setze, bekomme ich folgende Fehlermeldung:

Fehler
Der Wert "Grid1" des Name-Attributs kann für das Element "Grid" nicht festgelegt werden. "Grid" befindet sich im Bereich des Elements "MyTabItem", für das bereits ein Name registriert wurde, als es in einem anderen Bereich definiert wurde.


Hinweis: Dem TabItem wurde mit Name="MyTabItem1" ein Name zugewiesen und dem Grid innerhalb des Tabitems wurde auch ein Name="Grid1" zugewiesen.


Warum kann ich dies beim Standard TabItem problemlos machen und bei meinem abgeleiteten TabItem nicht? - Und wie kann ich das umgehen? (Ableitung ist korrekt mit public partial class MyTabItem : TabItem erfolgt)

Vielen Dank!