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 Cuin
Thema: Code wird nach while schleife nicht weiter abgearbeitet
Am im Forum: GUI: Windows-Forms

Hallo 0odarkio0,

du kannst ja mal versuchen die While-Schleife umzuschreiben, eventuel hilft es dir ja bei der Problemsuche:

do {
   suche_gw_1 = bild_quelle.IndexOf("<img src=\"", bild_2);
   if (suche_gw_1 != -1)
   {
      suche_gw_1 += 10;
      suche_gw_2 = bild_quelle.IndexOf("/>", suche_gw_1);
      suche_gw_2 -= 2;
      bilder_gw[bilder_gw_zaehler] = bild_quelle.Substring(suche_gw_1, suche_gw_2 - suche_gw_1);
      bilder_gw_zaehler++;
      bild_2 = suche_gw_2;
      MessageBox.Show(suche_gw_1.ToString());
   }
   else
   {
      break;
   }
} while (true);

oder besser so:

while(true) {
   suche_gw_1 = bild_quelle.IndexOf("<img src=\"", bild_2);
   if (suche_gw_1 != -1)
   {
      suche_gw_1 += 10;
      suche_gw_2 = bild_quelle.IndexOf("/>", suche_gw_1);
      suche_gw_2 -= 2;
      bilder_gw[bilder_gw_zaehler] = bild_quelle.Substring(suche_gw_1, suche_gw_2 - suche_gw_1);
      bilder_gw_zaehler++;
      bild_2 = suche_gw_2;
      MessageBox.Show(suche_gw_1.ToString());
   }
   else
   {
      break;
   }
}

Edit: Du kannst ja mal einen Breakpoint in die Else-Bedingung reinsetzen, wenn dieser Breakpoint nie erreicht wird, dann hast du hier definitiv eine Endlosschleife.

mfg Cuin

Thema: [Gelöst] Regex - Verbot von einer Zeichenkombination
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Vielen Dank für eure Hilfe, ich habs jetzt geschafft alle möglichen Kommentare richtig auszulesen und zuzuordnen.

Zitat
Wobei die Zeichenkombination /* durchaus vorkommen darf. /* /* */ ist ein legaler C#-Kommentar. Was du verbieten musst, ist dass die Zeichenkombination */ vorkommt. :-)

Stimmt, daran hab ich garnicht gedacht :-)

@m0rius: Den Ausdruck

/\*(?<comment>.*?)\*/

hatte ich schon ausprobiert gehabt, leider hat er bei mehreren hintereinanderliegenden mehrzeiligen Kommentaren Probleme verursacht (Auch bei der RegexOption "Singleline"). Z.B.:

/* Dies
ist ein mehrzeiliger Kommentar */
/* Dieser hier
auch */
irgendeinausdruck;
Zitat
P.S: Getestet habe ich den regulären Ausdruck mit dem On-the-fly Regex-Tester: Regex-Lab von herbivore.

Den benutze ich auch :-) Der ist echt super!


Gelöst habe ich das ganze mit Hilfe des Links den herbivore angegeben hat (RegexOption "Singleline" aktivieren):

/\*(?<Comment>((?!\*/).)*)\*/

Vielen Dank für eure Hilfe!

mfg Cuin

Thema: [Gelöst] Regex - Verbot von einer Zeichenkombination
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Hallo,

ich habe ein Problem beim Filtern von C-Kommentaren aus einer ASCII-Datei (txt-Datei).

Und zwar kommen in dieser Datei mehrere derartige Kommentare vor:

Irgendeinausdruck; /* Ein Kommentar */
Einzweiterausdruck; /* Zweiter Kommentar */

Ich möchte jetzt den ersten Kommentar rausfiltern, dazu habe ich folgendes Regex-Pattern geschrieben:

(?<name>Irgendeinausdruck)[^;]*;[^\n]*/\*(?<Comment>[^(/\*)]*)\*/

Mein Problem befindet sich in diesem Ausschnitt des Pattern:

/\*(?<Comment>[^(/\*)]*)\*/

Ich möchte also den Text filtern, der zwischen /* und */ steht.
Leider liefert mir mein Regex-Ausdruck dann alles was zwischen dem Anfang des ersten Kommentars und dem Ende des zweiten Kommentars steht.
Ich möchte also dieses "gierige Verhalten" ausschalten, indem ich angebe, dass die Zeichenkombination "/*" nich vorkommen darf.

Leider kann ich aber mit [^...] nur einzelne Zeichen verbieten, nicht aber eine Zeichenkombination. Hat jemand eine Ahnung wie ich das lösen kann? Ein ?-Zeichen einfach nach

(?<Comment>[^(/\*)]*)
zu setzen liefert leider überhaupt kein Ergebnis.

mfg Cuin

Thema: Binding einer Textbox in den DataGrid-RowDetails
Am im Forum: GUI: WPF und XAML

Hallo talla,

danke für deine Hinweise. Zufälligerweise habe ich gestern schon irgendwo gelesen, dass man INotifyPropertyChanged implementieren sollte, was ich dann auch ausprobiert habe, aber leider keinerlei Auswirkungen hatte.

            private void NotifyPropertyChanged(string propertyName)
            {
                if (PropertyChanged != null)
                {
                    PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
                }
            }

            public string Min
            {
                get
                {
                    return (this.min);
                }
                set
                {
                    int result;

                    if (int.TryParse(value.ToString(), out result))
                        if (result < 0 || result > 65535)
                            this.min = "0";
                        else
                            this.min = result.ToString();
                    else
                        this.min = "0";

                    NotifyPropertyChanged("Min");
                }
     }

Wie man in WPF Validiert wusste ich auch schon, da ich aber die Fehler in ähnlicher Art und Weise wie Visual Studio ausgeben wollte, dachte ich, dass mir die Validation Rules nix bringen, aber durch den von dir angegebenen Link glaube ich, dass ich mein Vorhaben auch mit Validation Rules lösen kann.
Ich werde es auf jedenfall mal ausprobieren :-)

Vielen Dank


[EDIT]Ich weiß jetzt wieso meine Textbox die Daten nicht aktualisiert:
Zitat
As you learned earlier, WPF quietly ignores data binding errors
that occur when setting or getting properties. In this case, the user won’t have any way of knowing that
the update has been rejected. In fact, the incorrect value will remain in the text box—it just won’t be
applied to the bound data object. To improve this situation, you need the help of the
ExceptionValidationRule, which is described next.

Thema: Binding einer Textbox in den DataGrid-RowDetails
Am im Forum: GUI: WPF und XAML

Hallo alle Zusammen,

ich habe folgendes Problem: Mein DataGrid hat als Itemsource eine ObservableCollection<TestKlasse>-Liste.

Die einzelnen Spalten meines Datagrids binde ich folgendermaßen:

<DataGridTextColumn Header="Value" Width="*" Binding="{Binding Type}" IsReadOnly="True"/>

Mein DataGrid verfügt außerdem über RowDetails, in welchen sich weiter Textboxen befinden, die ich ebenfalls an eine Klassen-Variable meiner ObservableCollection-Liste binden möchte.
 <TextBox Name="Min" Grid.Row="0" Grid.Column="1" Text="{Binding Path=Min, UpdateSourceTrigger=PropertyChanged}" Margin="0" MaxLines="1" VerticalAlignment="Center"/>

Und hier ein Beispiel einer Klassen-Variable:

            public string Min
            {
                get
                {
                    return (min);
                }
                set
                {
                    int result;

                    if (int.TryParse(value.ToString(), out result))
                        if (result < 0 || result > 65535)
                            value = "0";
                        else
                            value = result.ToString();
                    else
                        min = "0";
                }
            }


Ich möchte damit verhindern, dass der User ein ungültiges Zeichen in die Textbox eingibt und das automatisch die Variable "Min" gesetzt wird.
Wenn ich aber irgendwas in die Textbox eingebe, dann wird auch der Setter der Min-Variable aufgerfuen, jedoch hat das setzen von "value" oder "min" keinerlei auswirkungen auf den Inhalt meiner Textbox...

Ich habe die Validierung einer Textboxeingabe in einem anderen Teil meines Projektes hingekriegt, aber da sich die jetztige Textbox in den RowDetails befinden, funktioniert das ganze nicht mehr... hat jemand eine Idee was ich falsch mache?

mfg Cuin

Thema: On-the-fly Regex-Tester: Regex-Lab
Am im Forum: Projekte

Hallo herbivore,

auch von mir vielen Dank für dieses tolle Programm!
Es hat mir meine Arbeit sehr erleichtert!

mfg Cuin

Thema: Checkbox in Listbox selektieren
Am im Forum: GUI: WPF und XAML

Hallo xxMUROxx,

schade das man das nicht ausschalten kann... Mit Mausdown würde es bestimmt auch funktionierten, habe es aber jetzt mit einem Stackpanel gelöst, dass eine CheckBox und einen TextBlock beinhaltet. Ich fange dann noch die checkBox1_Checked und -UnChecked Events ab und selektiere dann das jeweilige Item in der ListBox.

Funktioniert auch ganz gut soweit :-)

Vielen Dank

mfg Cuin

Thema: Checkbox in Listbox selektieren
Am im Forum: GUI: WPF und XAML

Hallo,

ich habe eine Listbox, die ich zur Laufzeit mit Checkboxen fülle. Wenn ich auf das "label" neben dem kästchen der Checkbox klicke, toggelt die "IsChecked"-Property der Checkbox. Ich möchte aber, das man die Checkbox nur "checken" kann, wenn man auf das Kästchen klickt. Sprich: ich will dem Benutzer ermöglichen die checkbox zu selektieren ohne sie zu "checken". Mit rechts-klick funktioniert das ganze schon standartmäßig.

Hat jemand eine Idee wie man dieses Verhalten abschalten kann? Ich könnte natürlich auch einfach eine Checkbox ohne Content einfügen und daneben einen Textblock oder sowas, aber vllt geht es ja auch einfacher^^

Thema: TextCompositionEventArgs funktioniert nicht richtig
Am im Forum: GUI: WPF und XAML

Oh super! Deine Version funktioniert einwandfrei :)

In meiner Version wird nämlich Paste garnicht abgefangen... gut das du es noch erwähnt hattest!^^

mfg Cuin

Thema: TextCompositionEventArgs funktioniert nicht richtig
Am im Forum: GUI: WPF und XAML

Hallo,

ich habe folgendes Problem. Ich möchte einem Benutzer verbieten in einer Textbox unerlaubte Zeichen einzugeben. Dazu habe ich folgendes gemacht:

        private void TextBoxName_PreviewTextInput(object sender, TextCompositionEventArgs e)
        {
            char[] chararray = e.Text.ToCharArray();

            foreach (char c in chararray)
            {
                if (!char.IsLetterOrDigit(c) && c != '_')
                    e.Handled = true;
            }
        }

        private void TextBoxName_KeyDown(object sender, KeyEventArgs e)
        {
            if (e.Key == Key.Space)
                e.Handled = true;
        }

Das funktioniert soweit auch ganz gut, bloss wird das Drücken der Leertaste nicht erkannt. Der Benutzer kann also beliebig viele leerzeichen machen, obwohl das eigentlich nicht funktionieren sollte. Die Events werden beim drücken der leertaste auch garnicht aufgerufen... hat jemand eine Idee was ich da machen könnte?

mfg Cuin

[EDIT]Ups, musste einfach nur das Event KeyDown durch PreviewKeyDown ersetzen.^^ Allerdings frage ich mich trotzdem, wieso "TextBoxName_PreviewTextInput" beim drücken der Leertaste nicht gefeuert wird...

Thema: [gelöst] Projektdatei als Resource mitgeben
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Hallo gfoidl,

vielen vielen Dank für deine Tipps^^

Ich habe es jetzt hingekriegt:

Assembly _assembly;
Stream _ConfigStream;

_assembly = Assembly.GetExecutingAssembly();                    
_ConfigStream = _assembly.GetManifestResourceStream("myNamespace.Config.xml");

 xml.Load(_ConfigStream);

Diese Seite erklärt ziemlich gut wie es geht (wenn auch sehr schlecht übersetzt):

http://support.microsoft.com/kb/319292/de

Thema: [gelöst] Projektdatei als Resource mitgeben
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Hallo gfoidl,

ich habe jetzt mal die datai aus dem Resourcenmanager gelöscht und so wie du gesagt hattest die build-action der file auf "eingebettet resource" gestellt. Wenn ich jetzt das programm starte, dann findet er die datei leider nicht, wenn ich aber die Einstellung: "InAusgabeverzeichniskopieren" auf "immer" einstelle, dann findet er die datei, aber dann habe ich neben meiner exe auch noch meine xml-datei liegen, was ich nicht so gut finde...

Und wenn ich mein xml-datei als txt datei hinterlege, dann habe ich das selber problem, also dass VS die datei dann in bin/debug sucht...


Gibts da noch eine möglichkeit oder mache ich was falsch?

mfg Cuin

Thema: [gelöst] Projektdatei als Resource mitgeben
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Hallo alle Zusammen,

ich habe folgendes Problem:

In meiner Projektmappe habe ich dort, wo auch alle anderen CS-Files liegen eine XML-Datei erstellt. Sie enthält einige Daten, die ich für den ablauf meines Programmes benötige. Ich möchte nun den Inhalt dieser Datei zur Laufzeit laden. In etwa so:

XmlDocument xml = new XmlDocument();
xml.Load("Config.xml");

Leider sucht VS dieses Dokument im bin/Debug Ordner, es soll aber als Resource mitgegeben werden (ähnlich wie Bilder oder icons, die man als Resource mitgeben kann). Ich möchte auch nicht, dass der Anwender mein Programm erst installieren muss, sondern die .exe-Datei ausreicht und keine weiteren dateien mitgeliefert werden müssen.

Ich habe schon versucht meine xml-datei als resource zu definieren, dass hatte aber leider keinen erfolg... hat jemand eine Idee wie ich das realisieren könnte?

mfg Cuin

Thema: Automatisch generierte Spalte im DataGrid löschen
Am im Forum: GUI: WPF und XAML

Weil die Tabellen ja erst zur Laufzeit generiert werden und ich somit nicht weiß, wieviele spalten mein Datagrid hat, es soll nur die letzte spalte den verfügbaren platz einnehmen.
Oder geht das auch mit wenig aufwand per xaml?

Das datagrid wird dynamisch in abhängigkeit des gewählten knotens eines treeviews gefüllt.

Thema: Automatisch generierte Spalte im DataGrid löschen
Am im Forum: GUI: WPF und XAML

Habe ein Workaround entwickelt:

Man setzt einfach die Breite der letzten Spalte auf "IsStar":

datagrid.Columns[1].Width = new DataGridLength(1.0, DataGridLengthUnitType.Star);

Das hat zur Folge, dass die letzte spalte (damit meine ich die letzte spalte von meiner Tabelle und nicht die automatisch generierte platzhalter-spalte) den rest des verfügbaren platzes in anspruch nimmt, und somit diese automatisch generierte spale verschwindet.

mfg Cuin

Thema: Automatisch generierte Spalte im DataGrid löschen
Am im Forum: GUI: WPF und XAML

Ich habe es jetzt mal so versucht, wie du vorgeschlagen hattest:

DataGridTextColumn test = new DataGridTextColumn();
                    test.Header = "TestHeader";
                    datagrid.Columns.Add(test);

Leider hatte das keine Auswirkungen...

Ich habe hier mal ein bild angehängt, damit ihr sehen könnt, was ich meine:
(das rote kästchen zeigt nur, wo die spalte aufhört, weil man das so schlecht sieht)

Thema: Automatisch generierte Spalte im DataGrid löschen
Am im Forum: GUI: WPF und XAML

Ich wollte das eigentlich so in der Art realisieren:

datagrid.DataContext = dataset.Tables["Test"];

Das klappt auch wunderbar... bloss habe ich dann immernoch eine zusätzliche leere spalte, die einfach unschön ist....

Vllt ist der Ausdruck "zusätzliche Spalte" auch schlecht ausgedrückt... ich kann NICHT per datagrid.columns[index der letzten spalte] auf die letzte spalte zugreifen... die letzte spalte ist somit quasi nur ein platzhalter...


evtl. würde es auch reichen die weite der "vorletzten" spalte auf "fill" zu setzen, so wie es in winforms möglich war...
Leider funktioniert das hier aber nicht:

datagrid.Columns[1].Width = '*';

Hat jemand eine idee wie ich das machen könnte?

Thema: Automatisch generierte Spalte im DataGrid löschen
Am im Forum: GUI: WPF und XAML

Hallo,

weiß jemand von euch, wie man die automatisch generierte Spalte eines Datagrids löschen kann?

Wenn ich meinem datagrid eine tabelle mit zwei spalten als datasource angebe, dann werden die zwei spalten zwar schön angezeigt, aber es wird noch eine dritte (leere) spalte automatisch hinzugefügt... wie krieg ich die weg?

Bei den Zeilen gibt es so einen ähnlichen effekt, bloss kann man die zusätzlich hinzugefügte zeile mit CanUserAddRows = false oder so ähnlich löschen...

mfg Cuin

Thema: MenuItem mit Shortcut-Key
Am im Forum: GUI: WPF und XAML

Google sagt:

InputGestureText macht nichts weiter, als einen Text neben dem
Menüeintrag anzuzeigen, der den alternativen Aufruf dieses Befehls
beschreibt. Die Behandlung der Tastenkombination muss dabei von Dir
selbst vorgenommen werden. Die Nutzung von Command Objekten mit
zugewiesener KeyGesture wäre unter WPF eine elegante Möglichkeit das zu
lösen.

Wenn Du diesen Command Deinem Menüeintrag zuweist, kannst Du auch auf
die separate Angabe von InputGestureText verzichten, das wird dann
automatisch übernommen.

mfg Cuin

Thema: Zuordnung eines Namespaces
Am im Forum: GUI: WPF und XAML

Jop, hatte die Klasse von DependencyObject abgeleitet, dass hatte aber irgendwie keine Auswirkungen auf mein Programm.

Die Methode ändert einfach nur das Icon des TreeViewItem auf Expanded (Also geöffnetes Ordner-Symbol). Dann gibts noch das Pendant zu Collapsed. Ich meine damit, ob es sinnvoll ist irgendwelche Methoden in die Klasse hinzuzufügen, die irgendwie was mit dem TreeView zu tun haben, aber nicht unbedingt was mit "DependencyObjekt" zu tun.

 static void FolderExpanded(object sender, RoutedEventArgs e)
 {
     TreeViewItem item = (TreeViewItem)sender;
     SetIsRootLevel(item, TreeIcon.Open);
     e.Handled = true;
 }

Thema: Seltsames Verhalten von Gridsplitter: Bug oder Feature?
Am im Forum: GUI: WPF und XAML

Habe ein kleines, wenn auch sehr spezifisches Workaround dazu entwickelt. Man setzt einfach MinWidth der ersten Spalte auf einen festen Wert und MaxWidth läßt man anhand der Größe des Grids berechnen.

MaxWidth="{Binding Converter={StaticResource MaxWidthConverter}, ElementName=Grid, Path=ActualWidth, ConverterParameter=12}"

mfg Cuin

Thema: Kleines 2D RPG in VS 10 (C#)
Am im Forum: Grafik und Sound

Hallo Dr.Med.Lol,

ich weiß, dass es vllt jetzt etwas unpassend ist:

Aber wenn es dir mehr um das RPG-Spiel geht, als um das Programmieren, dann kann ich dir den RPG-Maker empfehlen... da kannste du ne Menge damit machen und musst dich nicht um jede Kleinigkeit kümmern...

mfg Cuin

Thema: Zuordnung eines Namespaces
Am im Forum: GUI: WPF und XAML

Nene^^ Ich habe das ganze quasi von vorn gemacht. Also die Methoden etc. von dem vorhin genannten Beispiel in mein Code kopiert und passend gemacht und getestet. Und danach NUR die Namen geändert und wieder getestet und dann aufeinmal funktionierte das ganze nicht mehr...

Und Triggern tu ich auf die Werte 0,1 und 2. =) Außerdem hat das ganze ja schon 100% funktioniert... bloss nach dem schließen des Programmes hat VS rumgemeckert, das "local" keinem Namespace zugeordnet werden kann...

Eine letzte Frage habe ich aber noch zu diesem Thema:

Meine Klasse TreeViewItemProps ist jetzt von DependencyObject abgeleitet. Sollte ich meine "static void FolderExpanded(object sender, RoutedEventArgs e)"-Methoden in eine andere Klasse setzen oder ist das egal? Weil die sich gegenwärtig immer noch in TreeViewItemProps befinden...

mfg Cuin

Thema: Zuordnung eines Namespaces
Am im Forum: GUI: WPF und XAML

Also ich versteh die Welt nichtmehr...

ich habe jetzt einfach die ganzen Methoden wie in dem vorhin genannten Beispiel umbenannt und auf einmal funktioniert das ganze... Kann es sein, dass IsRootLevel oder IsRootLevelProperty irgendetwas vordefiniertes ist? Oder das vllt TreeViewImage was vordefiniertes ist??

Hier mein jetztiger Code:

<DataTrigger Binding="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type TreeViewItem}}, Path=(local:TreeViewItemProps.IsRootLevel)}" Value="0">
    <Setter TargetName="img" Property="Source" Value="Images/FolderClosed.png" />
</DataTrigger>

Und die DependencyProperty:

public static readonly DependencyProperty IsRootLevelProperty =
    DependencyProperty.RegisterAttached(
    "IsRootLevel",
    typeof(int),
    typeof(TreeViewItemProps),
    new UIPropertyMetadata(0));

Also ich habe wirklich nix anderes gemacht, als die Dinger umzubennen...
Als [gelöst] kann man den Thread aber leider trotzdem nicht setzen, da ich immer noch nicht weiß, was mein Fehler war... naja, hauptsache das ding funktioniert jetzt^^
Vielen Dank für eure Hilfe!!

mfg Cuin

Thema: Zuordnung eines Namespaces
Am im Forum: GUI: WPF und XAML

Ich habe grade eben nochmal die Seite gefunden, von der ich mehr oder weniger abgeschrieben habe:

http://joshsmithonwpf.wordpress.com/2007/11/09/reaction-to-a-simple-wpf-explorer-tree/

Also bis auf die Namen, habe ich soweit fast alles übernommen.

TreeViewItemsProps ist eine Klasse die die DependencyProperty TreeViewImageProperty enthält. Und in dieser ist TreeViewImage definiert?

Ich seh grade den Wald vor lauter Bäumen nicht^^

mfg Cuin

Thema: Zuordnung eines Namespaces
Am im Forum: GUI: WPF und XAML

So was ähnliches wollte ich auch gerade posten^^

Mit "Path=TreeViewImage" lässt sich die Anwendung zwar starten, aber im Ausgabefenster kommen derartige Meldungen:

System.Windows.Data Error: 40 : BindingExpression path error: 'TreeViewImage' property not found on 'object' ''TreeViewItem' (Name='')'. BindingExpression:Path=TreeViewImage; DataItem='TreeViewItem' (Name=''); target element is 'ContentPresenter' (Name='PART_Header'); target property is 'NoTarget' (type 'Object')

Vllt könnt ihr damit ja was anfangen... offensichtlich findet er hier etwas nicht...

mfg Cuin

[Edit]Mit Path=(local:TreeViewItemProps.TreeViewImage)" kommen aber keine Fehler zur laufzeit... da funktioniert ja auch alles so wie es soll... oO?

Thema: Zuordnung eines Namespaces
Am im Forum: GUI: WPF und XAML

Ja, den würde ich auch gerne zulassen, aber ab und zu braucht man den dann doch noch. Und da das meine erste WPF-Anwendung ist, kann man nicht ausschließen, dass ich irgendwo einen Fehler drin habe ;-)

Wieso lässt sich die Anwendung überhaupt compilieren, wenn ich "Path=TreeViewImage" anstatt Path=(local:TreeViewItemProps.TreeViewImage)" schreibe?

In diesem Beispiel wird das etwas anders gemacht als ich es mache:

How to show different text based on an enum value?

Kann es sein, dass ich, wie in dem Beispiel, einen Setter und getter benötige??

[EDIT]Hab ich grade gemacht: Hat leider nix geändert.

mfg Cuin

Thema: Zuordnung eines Namespaces
Am im Forum: GUI: WPF und XAML

Hallo,

mich beschäftigt schon seit 2 Tagen ein Problem, und zwar geht es um ein TreeView, in dem ich die Icons, je nach TreeViewItem-Typ selber einstellen möchte. (Z.b.: unterschiedliche Icons für Expanden und Collapsed).

Das klappt auch bisher ganz wunderbar. Mein Programm lässt sich auch compilieren und starten. Wenn ich jedoch das Programm schließe, oder im Designer was ändern will, dann meckert VS 2010 immer: "Das Präfix "local" kann keinem Namespace zugeordnet werden. "

In folgender Zeile tritt der Fehler auf:


<DataTrigger Binding="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type TreeViewItem}}, Path=(local:TreeViewItemProps.TreeViewImage)}" Value="2">
    <Setter TargetName="img" Property="Source" Value="Images/FolderOpen.png" />
</DataTrigger>

Wenn ich das hier schreibe, dann tritt kein Fehler mehr auf, aber die Icons werden dann nicht mehr angezeigt:
<DataTrigger Binding="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type TreeViewItem}}, Path=TreeViewImage}" Value="2">
    <Setter TargetName="img" Property="Source" Value="Images/FolderOpen.png" />
</DataTrigger>


local wurde so definiert:
xmlns:local="clr-namespace:dummyNamespace"

Die Klasse TreeViewItemProps schaut so aus (Ausschnitt):

class TreeViewItemProps
{
    static void SetTreeViewImage(DependencyObject obj, int value)
	{
        obj.SetValue(TreeViewImageProperty, value);
	}

    public static readonly DependencyProperty TreeViewImageProperty =
		DependencyProperty.RegisterAttached(
        "TreeViewImage", 
		typeof(int), 
		typeof(TreeViewItemProps), 
		new UIPropertyMetadata(1));
}

Weiß jemand, was ich falsch mache?

mfg Cuin

Thema: TreeView-Selection: Verlauf statt einfacher Hintergrundfarbe
Am im Forum: GUI: WPF und XAML

Das würde mich auch interessieren^^ Habe so ein ähnliches Problem.

mfg Cuin

Thema: [erledigt] Visibility Einstellung speichern
Am im Forum: GUI: WPF und XAML

Hallo,

Default.ToolBarTrayVisibility ist vom Typ "int".

Habe es jetzt endlich hingekriegt mit dem BooleanToVisibilityConverter.

Vielen Dank für eure Hilfe!

mfg Cuin