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 CSharperUser
Thema: WPF App.xaml in Windows-Forms Anwendung einbinden
Am im Forum: Rund um die Programmierung

Hallo Create,

füge doch einfach ein ResourceDictionary hinzu und verweise in deinem XAML darauf. Für die Definition von Styles, etc. benötigst du keine App.xaml. Es wird nur oft dort gemacht, weil man will, dass die Definitionen für die gesamte Anwendung gelten (also nicht neu eingebunden werden müssen).

Thema: Hilfe bei Func<TSource, TResult>
Am im Forum: Datentechnologien

Hallo burkut,


 List<Student> rblKonfigs = persList.Select(p => new Student
{
  Age = p.Age,
 Name = p.Name,
 Anschrift = p.Anschrift
}).ToList();

Wie Mallet aber schon richtig sagt, würde ich Student von Person erben lassen und dann die gleichen Properties aus Student rauswerfen.

Dann kannst du nämlich Folgendes machen:


List<Student> rblKonfigs = persList.Cast<Student>().ToList();

Alternativ zum Cast kannst du mit OfType() arbeiten, da wird dann keine Exception geworfen.

Thema: Frage: Einfaches CustomControl mit Binding via DependencyProperty
Am im Forum: GUI: WPF und XAML

Hallo N0ACE,

nimm am Besten das Binding für den DataContext in deinem UserControl aus dem XAML und definiere es im Codebehind des Controls:


// using ...

namespace TEST_Headlines
{
    public partial class BaseHeadline : UserControl
    {
        public static readonly DependencyProperty TitleProperty = DependencyProperty.Register(
            "Title",
            typeof(string),
            typeof(BaseHeadline),
            null
        );

        public string Title
        {
            get { return (string)GetValue(TitleProperty); }
            set { SetValue(TitleProperty, value); }
        }

        public BaseHeadline()
        {
            InitializeComponent();
            DataContext = this;
        }
    }
}

Alternativ kannst du auch z.B. beim Binding auf Title noch die Quelle (also das Control selbst) über ElementName oder RelativeSource-Binding angeben.

Thema: WPF: Validierung mit ValidationRule
Am im Forum: GUI: WPF und XAML

Hallo flacker,

in deinem XAML ist nirgendwo definiert, auf welche Property der TextBox dein Binding angewendet werden soll. Du musst hier die Text-Property angegeben.


....
 <TextBox
            HorizontalAlignment="Left"
            VerticalAlignment="Top">
<TextBox.Text>
            <Binding Path="States" UpdateSourceTrigger="PropertyChanged">
                <Binding.ValidationRules>
                    <local:ValidierungTest/>
                </Binding.ValidationRules>
            </Binding>
</TextBox.Text>
        </TextBox>

Thema: Wenn Thumb aus dem Scrollviewer nach Links gezogen wird kann dort nicht hingescrollt werden
Am im Forum: GUI: WPF und XAML

Hallo Create,

erzeuge eine eigene Klasse, die von Canvas ableitet und überschreibe darin die MeasureSize-Methode. Innerhalb der Methode kannst du über die Children-Property auf die Elemente auf dem Canvas zugreifen und über deren Width und Height die maximale Größe des Canvas ermitteln. Problematik ist nämlich, dass das Canvas eine undefinierte Größe hat, solltest du sie nicht irgendwo fest definiert haben.

Jedes mal beim Drachen über den Tumb rufst du dann die InvalidateVisual-Methode des Canvas auf. Damit wird festgestellt, dass das gedraggte Element außerhalb des maximalen Bereichs des Canvas liegt und der Scrollviewer automatisch angezeigt.

Thema: Technologie_un_abhängige Zertifizierungen, z.B. Certified Professional for Software Architecture
Am im Forum: Smalltalk

Hallo Coder007,

Bei der Zertifizierung geht es um das Vorgehen zur Erzeugung einer Softwarearchitektur, welche Risiken, Randbedingungen zu beachten sind und wie diese sinnvoll ermittelt werden. Inhaltlich geht es um die Rolle des Architekten, welche Sichten sinnvoll sind, wie man von den Anforderungen in iterativen Schritten zur passenden Architektur kommt. Für weitere Infos kann ich dir folgende Seite empfehlen:

CPSA

Wenn du den kompletten Inhalt wissen möchtest, kann ich dir das Buch "Basiswissen für Softwarearchitekten" von Mahbouba Gharbi empfehlen.

Thema: Technologie_un_abhängige Zertifizierungen, z.B. Certified Professional for Software Architecture
Am im Forum: Smalltalk

Hallo Garby,

ich besitze beispielsweise die CPSA (Certified Professional for Software Architecture), die komplett Technologieunabhängig ist.

Thema: C#-Zertifizierung 362 (MS MTA für Windows-Software)
Am im Forum: Smalltalk

Hallo S.R.,

ich bin grundsätzlich kein Fan der Microsoft Zertifizierenden. Die Zertifizierung bringt meiner Meinung nach folgende Nachteile:
- Zertifizierung für eine Technologie (hier: Microsoft C#)
- Zertifizierung nur für eine Version (Bsp. wenn du dich für 2010 zertifizierst, musst du für 2012 die Zertifizierung nachmachen, wenn du möchtest, dass diese auch dafür gilt.)

Die meisten Arbeitgeber in der Branche kennen die Microsoft Zertifizierungen und wissen, dass ein Zertifikat nicht immer auch heißt, dass man wirklich gut in der Praxis ist, da es sich nur um Multiple Choice Fragen handelt und diese nicht so schwer sind. Ich würde dir eher zu Zertifizierungen raten, die technologieunabhängig sind.

Thema: Wieso macht Visual Studio nicht was ich will
Am im Forum: GUI: WPF und XAML

Hallo Sam99,

deine Styles unterscheiden sich lediglich in der Schriftgröße. Deshalb ist es auch nicht verwunderlich, dass beide eine rote Schriftfarbe haben, siehe


Value="{DynamicResource ResourceKey=ForegroundColor}"

Das Label übernimmt also nicht den Style des TextBlock.

Thema: (tief) geschachteltes XmlDocument mit weniger/einfacherem/übersichtlicherem Code enumerieren
Am im Forum: Datentechnologien

Was spricht gegen LINQ to XML? Damit lässt sich die XML viel schöner parsen.

Thema: Liste erstellen, die Ordnernamen ohne deren Pfade anzeigt
Am im Forum: GUI: Windows-Forms

Hallo Epanias,

Erweitere einfach deinen Code um folgende Zeilen:


string verzeichnis;
            int i;
            string[] dateiliste;
            Directory.SetCurrentDirectory(CharDirectory);
            verzeichnis = Directory.GetCurrentDirectory();
            dateiliste = Directory.GetDirectories(verzeichnis);
            lstCharacterList.Items.Clear();
            for (i = 0; i < verzeichnis.Length; i++)
            {
                string vollerPfad = dateiliste[i];
                string ordnername = vollerPfad.Substring(vollerPfad.LastIndexOf("/") + 1);
                lstCharacterList.Items.Add(ordnername);
            }

Eventuell aus dem / einen Backslash machen.

Thema: Ermitteln, ob die erste Zahl einer Liste am größten ist, aber bestimmten Wert ignorieren
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Du kannst natürlich zusätzlich einen zweiten Counter einfügen, der die Anzahl der Versuche protokolliert. Wenn dieser Counter also < 2 ist, dann gilt deine Ausnahme, ansonsten bist du definitiv beim zweiten Versuch.

Thema: ArrayList nach bestimmten Zahlen in einem String sortieren
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Hallo indeopax,

erstens ist eine ArrayList schlecht. Verwende hier eine generische Collection, bsp. List<T>. Da du immer Tuple einfügst würde ich für T die Klasse Tuple<string,string> wählen.

Sortieren kannst du es dann so (ungetestet):


List<Tuple<string,string>> liste = new List<Tuple<string,string>>();
liste.Add(new Tuple<string,string>("12","13"));
iste.Add(new Tuple<string,string>("43","12"));
iste.Add(new Tuple<string,string>("21","13"));

//sortieren mit Lamda-Ausdruck
//first und second sind die Tuple, die aktuell verglichen werden
liste.Sort((first,second)=>first.Item1.CompareTo(second.Item1));

Thema: Ermitteln, ob die erste Zahl einer Liste am größten ist, aber bestimmten Wert ignorieren
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Hallo wokie,

ich weiß zwar nicht, was du mit deiner Lösung erreichen willst, aber was spricht dagegen, das Array aufsteigend zu sortieren?

Einfach mit

Array.Sort()
das Array sortieren und dann sind die Elemente der Größe nach aufsteigend sortiert. Die Anzahl der Elemente wäre dann die Länge des Arrays. Außerdem ist es nicht logisch zu sagen, dass in deinem Beispiel 1 ≤ dem aktuellen Element ist, weil es einfach nicht zutrifft, d.h. du würdest dein Ergebnis verfälschen.

Thema: Animation mit WPF flackert
Am im Forum: GUI: WPF und XAML

Hallo Jazzman,

der Grund des Flackerns liegt daran, dass die Animation, etc. im GUI-Thread abläuft (Gut, ist ja irgendwo logisch, weil du nur aus dem GUI-Thread auf GUI-Elemente zugreifen solltest).

Ich würde mir an deiner Stelle mal die Animation-Klassen und das Storyboard in WPF anschauen, mit dem Animationen in WPF gemacht werden. Bei der stelle ich so schnell kein Flackern fest.

Thema: enthält keine als Einstiegspunkt geeignete Statische Methode / Startobjekt festelegen
Am im Forum: Entwicklungs- und Laufzeitumgebung (Infrastruktur)

Hallo DaReaLSy,

ohne ein bisschen Code kann dir niemand wirklich weiterhelfen.

Poste doch bitte einfach den Teil deines Homeviews und deiner Main-Methode.

Thema: XAML Binding funktioniert im Emulator nicht aber auf dem Devige (Windows Phone)
Am im Forum: GUI: WPF und XAML

Hallo MysticEmpires,

Ich habe 2 Vermutungen:

1.) Der Simulator unterstützt für das Binding vielleicht kein IEnumerable. Versuche mal auf dem GroupBy "ToList" aufzurufen, also:


llsNews.ItemsSource = posts.GroupBy(p => p.Date.ToString("dddd, d.MMMM yyyy")).ToList();

2.) Wie sehen die Instanzen der posts-Collection aus? Gibt es eine Property Key? Wie ist da die Sichtbarkeit definiert?

Thema: CodeDomProvider: FileNotFoundException bei Ordnerstruktur
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Da hab ich mich wohl falsch ausgedrückt. Ich verweise natürlich auf einen Namespace. Die Klasse Class2 liegt nun aber im Namespace Project.BL und deshalb muss ja eine using-Anweisung hinzugefügt werden. Heißt das jetzt, dass es so nicht funktionieren würde? Dann wäre die CodeDomProvider-Klasse zum Kompilieren unnütz.

Thema: CodeDomProvider: FileNotFoundException bei Ordnerstruktur
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Hallo zusammen,

folgende Problematik habe ich:

Angenommen, es existiert ein C#-Projekt mit folgender Struktur:

Project.csproj
- BL (Ordner)
- Class1 (in BL-Ordner)
- Class2

In Class2 wird Class1 verwendet. Hierzu wird eine using-Direktive verwendet:


using Project.BL; 
...
public class Class1
{
   ... //Definition
}

Wenn ich jetzt Class1 mit dem CodeDomProvider und der Methode CompileAssemblyFromSource kompiliere, erhalte ich aus der rückgegebenen ErrorCollection eine FileNotFoundException:
Fehler
Die Datei oder Assembly BL kann nicht gefunden werden. (Verweis fehlt?)

Die notwendigen referenzierten Assemblies habe ich der Providerinstanz bereits hinzugefügt.

Wie kann ich dieses Problem mit der Ordnerstruktur/using-Direktive lösen?

Thema: Dockpanel MenuItem Background -> Border
Am im Forum: GUI: WPF und XAML

Hallo,

setz mal Padding bzw. Margin auf 0.

Wenn das nicht hilft, dann müsstest du wohl das Template für das MenuItem überschreiben.

Thema: TextBox durch RichTextbox ersetzen
Am im Forum: GUI: WPF und XAML

Hallo sindibad,

Eine RichTextBox ist das richtige Control für deine Anforderung, weil - wie du bereits selbst geschildert hast - die einfache TextBox dies nicht unterstützt.

Grundsätzlich musst du beim "Auftreten"/Loggen einer Exception den Text in die Box schreiben und den StartIndex sowie die Länge des Textes innerhalb der Box ermitteln. Anschließend musst du die Infos den Properties SelectionStart und SelectionLength der Box übergeben und entsprechend die SelectionColor setzen.

Dies sollte dir eventuell helfen:RichTextBox Textteile farbig markieren

So wie ich das sehe, verwendest du Windows Forms und nicht WPF.

Thema: WPF MVVM - Anzeige von vielen Datensätzen
Am im Forum: GUI: WPF und XAML

Hallo jogisarge,

Im Grunde hast du deine Fragen durch die Beschreibung des Ist-Zustands bereits beantwortet:

Zitat
Änderungen in der Tabelle werden sofort nach verlassen der Zeile an die DB übermittelt.
Änderungen im Detailfenster werden sofort nach dem Speichern-Button an die DB gesendet.

Je nach Anzeigeart also einen Button bzw. Direktes Speichern über das Ereignis "Zeile verlassen". Bedenke aber, dass du...
a)...nur die geänderten Daten speicherst (Dabei hilft dir die ObservableCollection)
b)...Das Speichern asynchron erfolgen sollte, damit die GUI nicht blockiert.

Für die tabellarische Darstellung empfiehlt sich das Datagrid.

Thema: Func<...> und Action<...> jetzt mit 16(!) Parametern !!!
Am im Forum: Smalltalk

Aus der Clean Code Perspektive wäre das so auch nie in Ordnung. Da sollte man die vielen Parameter lieber in ein Objekt zusammenführen. Deshalb ist es so schon unnötig.

Thema: Visual C# 2010 Express lässt sich nicht installieren
Am im Forum: Entwicklungs- und Laufzeitumgebung (Infrastruktur)

Hallo,

hat das eventuell was mit dem Build zu tun, also ob du ne x32 oder ne x64 Version von VS Express installieren willst?

Thema: Fenstergröße einer selbst gestalteten Anwendung ändern
Am im Forum: GUI: WPF und XAML

Hallo vita85,

Eine Alternative wäre die Verwendung von

CanResizeWithGrip
beim ResizeMode. Dadurch bekommst du am unteren rechten Rand ein Grip angezeigt, mit dem du die Fenstergröße ändern kannst.

Sollte dir die Lösung nicht reichen, könnte dir eventuell das hier helfen:
Resizing Custom Window in WPF

Hier wird zwar Expression Blend verwendet, aber das kann man auch in Visual Studio und XAML direkt entsprechend umsetzen.

Thema: Office 2003 VSTO AddIn VS2008 --> 2010
Am im Forum: Office-Technologien

Meine Vermutung ist, dass VS automatisch bei den neuen Projektvorlagen von einer höheren Office-Version ausgeht.

Probier am besten mal Folgendes:

Projekteigenschaften (Eigenschaften bei Rechtsklick auf Addin-Projekt) -> Debug -> Starte mit externem Programm => hier musst du die exe deiner Office-Version (Excel, Word, etc.) auswählen, über die dein Addin gestartet werden soll.

Bei mir hat das so funktioniert.

Thema: Office 2003 VSTO AddIn VS2008 --> 2010
Am im Forum: Office-Technologien

Hallo Endro,

Ja das ist möglich. Ich habe auch vor einer Weile mit VS 2008 ein Addin für Office 2003 erstellt. Vor Kurzem sind wir dann auf VS 2010 umgestiegen und da habe ich das Projekt einfach mit VS 2010 konvertiert und daran weiterentwickelt.

Thema: VS 2010 Express: .NET 4.5 Unterstützung?
Am im Forum: Entwicklungs- und Laufzeitumgebung (Infrastruktur)

Hallo zusammen,

Laut Microsoft soll die Express-Edition von VS 11 (bzw. VS 2012) nur Metro-Anwendungen ermöglichen, für Desktop-Anwendungen soll man weiterhin die Express-Edition von VS 2010 verwenden, wenn man auf keine höhere Version umsteigen will.

Weiß eventuell jemand, ob es für VS 2010 eine .NET 4.5 Unterstützung (Bsp. über Service Pack) geben wird? Sonst wäre man als Express-Anwender genötigt, auf eine höhere Version umzusteigen.

Wann wird denn die VS 11 Express Version erscheinen?

Thema: Linie zwischen zwei Adornern zeichnen
Am im Forum: GUI: WPF und XAML

Ich hab das Problem jetzt gelöst.

Zuerst ist die Berechnung von relativeX und relativeY falsch.

Außerdem hab ich das Zeichnen ausgelagert, indem ich von Canvas abgeleitet habe und darin die OnRender-Methode überschreibe. Dort hole ich mir alle Verbindungen und zeichne dann die Linie über die Properties SourceLocation und DestinationLocation.

Thema: Linie zwischen zwei Adornern zeichnen
Am im Forum: GUI: WPF und XAML

Ich habe zur Verdeutlichung ein Screenshot angehängt.

Hier mein Code der Adorner-Klasse:


 public class ConnectionAdorner : Adorner
    {
        private readonly UserControl _adornedElement;
        private bool _isConnected;
        private RelationDirection _direction;

        public ConnectionAdorner(UserControl adornedControl) : 
        base (adornedControl)
        {
            _adornedElement = adornedControl;
            Connectors = new List<Connector>();
        }

        protected override void OnRender(DrawingContext drawingContext)
        {
            var currentBounding = new Rect(_adornedElement.DesiredSize);
            var relativeX = Direction == RelationDirection.SourceToDestination ? 
            Canvas.GetLeft(_adornedElement) : 
            Canvas.GetLeft(_adornedElement) + _adornedElement.ActualWidth;
            
           var relativeY = Canvas.GetTop(_adornedElement) + 
            _adornedElement.ActualHeight / 2.0;
            
            var currentX = Direction == RelationDirection.SourceToDestination ? 
            currentBounding.TopRight.X : currentBounding.TopLeft.X;
            
            var currentY = currentBounding.TopRight.Y + currentBounding.Height / 
            2.0;
            
            var centerPosition = new Point(currentX, currentY);
            ConnectorPoint = new Point(relativeX, relativeY);

            drawingContext.DrawEllipse(new SolidColorBrush(IsConnected ? 
            Colors.Black : Colors.White), new Pen(Brushes.Black, 1.5), centerPosition, 
            5.0, 5.0);

            foreach(var connector in Connectors)
            {
                drawingContext.DrawLine(new Pen(Brushes.Black, 1.5), 
                connector.SourceLocation, connector.DestinationLocation);
            }
        }

        public bool IsConnected 
       { 
          get 
          { return _isConnected; } 
          set
          {
            if(_isConnected != value)
            {
                _isConnected = value;
                InvalidateVisual();
            }
         }
       }

        public RelationDirection Direction 
       {
        set
        {
            if(_direction != value)
            {
                _direction = value;
                InvalidateVisual();
            }
        } 
        get { return _direction; } 
       }

        public Point ConnectorPoint
        {
            get; private set; 
        }

        public IList<Connector> Connectors { private set; get; }
    }

Die Klasse Connector bestimmt den Start- und Endpunkt in Abhängigkeit der Lage der Controls auf dem Canvas.

P.S.: Bitte nicht über die Codequalität wundern, das Ganze ist als Spike-Solution gedacht.