Web- und Software Development

Archive for the 'WPF' Category

Interaction Event-Trigger als Style auslagern

In einem Caliburn.Micro Projekt setze ich den EventTrigger ein, um meine Commands an einem ViewModel zu binden. Nun möchte ich gerne immer den selben EventTrigger an mehreren Stellen einsetzen und verhindern, dass der Code an “tausend” Stellen redundant eingesetzt wird. Aus diesem Grund, soll diese Interaktion als Style zu Verfügung gestellt werden. Der folgende Code [...]

Read the rest of this entry »

Asynchrones Befüllen einer ObservableCollection<T> in einem ViewModel

Die Aufgabenstellung beschreibt, das innerhalb eine ViewModels Daten aus einer Datenbank ausgelesen und über der Netzwerkverbindung noch weiter verarbeitet werden müssen. Hier liegt es auf der Hand, dass eine asynchrone Lösung her muss, sprich es muss unter allen Umständen verhindert werden, dass die UI blockiert. Wie man das machen kann, zeige ich wie folgt: Ich [...]

Read the rest of this entry »

DataBindings debuggen – WPF

Beim DataBinding ist es nicht immer einfach festzustellen, warum denn nun ein Wert nicht angezeigt wird. Die Fehlersuche zeigt sich mitunter, gerade auch in immer größer werdenden Projekten, als äußerst schwierig. Das liegt daran, das im DataBinding keine Exception geworfen werden, wenn hier ein Element, eine Property, oder ein Path nicht gefunden wird. Ein paar [...]

Read the rest of this entry »

Gemeinsamen Validation Style für Controls – WPF

Um einen gemeinsamen Style für Validierungsfehler in der WPF zu verwenden, definiert man einen Style für den TargetType Control und vergibt diesen einen Key. <Style x:Key=”validationTriggerBase” TargetType=”Control”> <Style.Triggers> <Trigger Property=”Validation.HasError” Value=”true”> <Setter Property=”ToolTip” Value=”{Binding RelativeSource={RelativeSource Self}, Path=(Validation.Errors)[0].ErrorContent }” /> </Trigger> </Style.Triggers> </Style> <Style TargetType=”{x:Type TextBox}” BasedOn=”{StaticResource validationTriggerBase}” /> Viel Spaß beim entwickeln : )

Read the rest of this entry »