Laden...

Forenbeiträge von _Cashisclay Ingesamt 277 Beiträge

10.07.2018 - 08:44 Uhr

Also es scheint zu funktionieren nur hat es mit Listen leider nicht funktioniert.

Hab jetzt mal eine DataTable benutzt und damit ging es dann, eigentlich wollte ich keine DataTable benutzen, weil ich mir dann immer erst meinen Eintrag suchen muss, jemand eine bessere Idee, welchen Typen ich verwenden könnte?



private static System.Data.DataTable _DataTable;

public static event EventHandler<PropertyChangedEventArgs> StaticPropertyChanged;

public static System.Data.DataTable DataTable
{
      get { return _DataTable; }
                set { _DataTable = value;
                NotifyStaticPropertyChanged("DataTable");
            }
}

            private static void NotifyStaticPropertyChanged(string PropertyName)
            {

                if (StaticPropertyChanged != null)
                {
                StaticPropertyChanged(null, new PropertyChangedEventArgs(PropertyName));
                }

            }


10.07.2018 - 07:24 Uhr

Servus,

du meinst statics? Einen Struct innerhalb einer Liste sollte doch eigentlich kein Problem darstellen.

10.07.2018 - 06:51 Uhr

Guten Morgen zusammen,

ich hab vor kurzem die Firma gewechselt und das Projekt was mir neu zugewiesen wurde, dort wurden fast nur static Propertys verwendet, meine Frage .. ist es möglich das ganze auch mit static Propertys auf PropertyChanged umzusetzen? Bevor ich alles umschreiben müsste?

Zuletzt hatte ich das Beispiel erfolgslos versucht :


        static DataHerstellung()
        {

            PropertyChanged += (sender, e) => { return; };

        }

        #region Definitionen

            //public static event PropertyChangedEventHandler PropertyChanged;

            public static event EventHandler PropertyChanged;



            private static int _List_Of_Validation_SelectedIndex;

            private static System.Collections.ObjectModel.ObservableCollection<List_Of_Validation> _ValidationEntrys;

        #endregion

        #region Struktur

         public struct List_Of_Validation
            {   
                public string Message { get; set; }    
                public bool Message_IsChecked { get; set; }
                public string Info { get; set; }
                public string Typ { get; set; }
            }

        #endregion


            public static System.Collections.ObjectModel.ObservableCollection<List_Of_Validation> ValidationEntrys
            {

                get
                {

                    return _ValidationEntrys;

                }
                set
                {

                    _ValidationEntrys = value;

                    OnPropertyChanged(EventArgs.Empty);

                }

            }
29.06.2018 - 09:52 Uhr

Hallo pinki,

danke für deine Antwort. =)
Ich bräuchte leider beide Steuerelemente in einem.

Grüße

29.06.2018 - 09:10 Uhr

Also konnte noch keiner Erfahrung in dem Bereich sammeln 🤔 =)

28.06.2018 - 14:32 Uhr

Servus,

gibt es ein Steuerelement in WPF (auch Telerik) wo ich mir mein Datum auswählen kann und meine Uhrzeit via Uhr oder ähnlichem?

Hab für Telerik jetzt nur RadDateTimePicker gefunden, aber dort kann ich nur ein Intervall für die Uhrzeitauswahl angeben, müsste mir dann diese Uhrzeit auswählen und manuell im Feld nochmal nachpflegen.

Konnte jemand schon mal in die Richtung Erfahrung sammeln?

Grüße

19.06.2018 - 15:52 Uhr

Sorry meinte auch EF6, ich frag nur, weil das ganze via Direkt SQL zu machen irgendwie veraltet zu sein scheint. Jedenfalls wird es in meiner neuen Firma nicht praktiziert.

19.06.2018 - 15:41 Uhr

Besser wäre es wahrscheinlich direkt mit dem EF zu arbeiten?

18.06.2018 - 17:29 Uhr

Wie ich das ganze in C# umsetzen kann, weil wenn ich das ganze ähniche versuche, scheitert es schon bei dieser CDATA Anweisung, da mir diese fehlerhaft angezeigt wird, würde mich trotzdem interessieren wie das geht, auch wenn man es offensichtlich anders umsetzen soll, was auch gut zu wissen ist.

Grüße

18.06.2018 - 14:22 Uhr

Soll ich mich jetzt einem der Beispiele von gfoidl witmen, oder habt ihr noch einen Vorschlag? Ich les ja jetzt nur das meine "alte" Vorgehensweise unsicher und schlecht ist? Wobei ich damit immer gut gefahren bin und aktuell auch nicht direkt weiß warum die unsicher sein sollte. Wenn es jetzt um Hochkommas oder dergleichen geht ist das absolut kein Ausschlusskriterium in meinen Augen.

Grüße

18.06.2018 - 13:58 Uhr

Doch das hat wunderbar funktioniert, fand das auch sehr übersichtlich.

        Dim sqlCommandString As String = <![CDATA[

            SELECT 
				AI.ViewCluster, 
					AI.Artikelnummer, A.Matchcode, 
				AI.Kanal AS Vertriebskanal, 
					ISNULL(AI.IsGrouped, 0) AS IsGrouped, 
				MGGFK.Sku_Gruppe AS GrpSKU, 
					CAST(AI.AngelegtAm AS DATE) AS AngelegtAm
            FROM Artikelstammdaten.dbo.ArtikelImport AS AI
				LEFT JOIN SL_MMETA.dbo.ART AS A
					ON AI.Artikelnummer = A.Artikelnummer
				LEFT JOIN Artikelstammdaten.dbo.MT_get_gruppiertXeinfach_from_Kanal(']]><%= Vertriebskanal %><![CDATA[') AS MGGFK
					ON AI.Artikelnummer = MGGFK.Sku_Einfach COLLATE Latin1_General_CI_AS
			WHERE Kanal = ']]><%= Vertriebskanal %><![CDATA['
                ORDER BY ViewCluster, IsGrouped, Artikelnummer

                                                    ]]>

Und selbst wenn du den unsauberen Weg gehst und reines SQL absetzen willst, haben das <a> und das <![CDATA[ ... ]]> da nichts zu suchen. Das soll in VB funktioniert haben? 👶

18.06.2018 - 12:24 Uhr

Hallo zusammen,

mal eine allgemein recht simple Frage, ich hab in VB immer für SQL Abfragen CDATA benutzt.

Das sah dann so aus ->

Dim sqlCommandString As String =<![CDATA[

Select * FROM Zeiterfassung.dbo.Mitarbeiter

]]

Gibt es das in der Form nicht für C#?

Grüße

17.04.2018 - 08:40 Uhr

Naja ich gehe weniger davon aus das es an der Datenbank liegt sondern das ja bei jedem Tastenanschlag das PropertyChanged Event ausgelöst wird

17.04.2018 - 08:12 Uhr

Hallo Community,

ich habe das Problem das wenn ich meine TextBox mit meinem VM verbinde und im PropertyChanged Event dann auf jede Eingabe reagiere (Möchte den Wert mit der Datenbank überprüfen) es zu sichtlichen performance Problemem kommt für den Benutzer, hat jemand schon mal Erfahrung gesammelt?

Man könnte es auch anders lösen, allerdings interessiert mich erstmal ob man in dem Fall irgendetwas machen kann?

Grüße

06.04.2018 - 12:11 Uhr

Habs gelöst, war nur dumm wie Scheiße .. 😕

    Public Sub set_VerticalOffset_From_ScrollViewer(ByVal VerticalOffset As Double)

        ' --- interne Variablen Deklaration --- '

        Dim iCount As Integer = 0

        Try

            If Not VisualTreeHelper.GetChildrenCount(DataGrid) = 0 Then

                Do While iCount < VisualTreeHelper.GetChildrenCount(DataGrid)

                    If TypeOf (VisualTreeHelper.GetChild(DataGrid, iCount)) Is Border Then

                        Dim Border As Border = VisualTreeHelper.GetChild(DataGrid, iCount)

                        If Not VisualTreeHelper.GetChildrenCount(Border) = 0 Then

                            If TypeOf (VisualTreeHelper.GetChild(Border, iCount)) Is ScrollViewer Then

                                Dim ScrollViewer As ScrollViewer = VisualTreeHelper.GetChild(Border, iCount)


                                If ScrollViewer IsNot Nothing Then

                                    ScrollViewer.ScrollToVerticalOffset(VerticalOffset)

                                End If

                            End If

                        End If

                    End If

                    iCount = iCount + 1

                Loop

            End If

        Catch ex As Exception
            Fehlerbehandlung = New Fehlerbehandlung
            Fehlerbehandlung.Fehlermeldung = ex
            Fehlerbehandlung.ShowDialog()
        End Try

    End Sub
05.04.2018 - 14:56 Uhr

Konnte noch keiner Erfahrung damit sammeln oder hab ich meine Frage eventuell doof formuliert?

Grüße

04.04.2018 - 09:53 Uhr

Hallo zusammen,

ich hab ein DataGrid in einem Frame und möchte mir von dem DataGrid den ScrollViewer holen um den Wert des ScrollToVerticalOffset zu setzen.

Leider bekomm ich schon von der Funktion VistualTreeHelper.GetChildrenCount(DataGrid) eine 0 zurück, wenn ich das ganze außerhalb des Frames mit dem selben DataGrid ausführe bekomm ich einen Wert zurück.

Funktioniert so etwas grundsätzlich nicht wenn man eine Page in ein Frame geladen hat?

Grüße

01.03.2018 - 10:14 Uhr

Hat denn jemand schon mal "erfolgreich" eine alternativen WebBrowser benutzt? CefSharp krieg ich bei mir unter VS10 nicht eingebunden..

Alternativen haben bis jetzt auch noch nicht geklappt.

Grüße

Edit: Ich geb es auf, das kostet mich einfach zu viel Zeit und zu viele nerven, geht halt nicht.

28.02.2018 - 13:49 Uhr

Wegen der Zeile :

<meta http-equiv="X-UA-Compatible" content="IE=11"></meta>

Kommt der Fehler ständig, wenn ich das ganze auf IE=8 stelle funktioniert es.. allerdings sieht es dann nicht mehr so aus wie gewünscht .. es ist zum verzweifeln.

28.02.2018 - 11:48 Uhr

Damit geht es .. es scheint also mit der Quelle meiner Daten zusammenzuhängen

Bzw. macht es einen Unterschied für das Auslesen der Scrollwerte ob ich es mit Navigate oder z.B. NavigateToString anzeige?

28.02.2018 - 09:21 Uhr

Heißt bei mir auch ganz normal HTMLDocument

'Dim doc As mshtml.HTMLDocument = WebBrowser.Document

                                'If Not doc.getElementsByTagName("html").length = 0 Then

                                '    If doc.readyState = "complete" Then

                                '        MsgBox(doc.getElementsByTagName("html")(0).ScrollLeft.ToString)

                                '        MsgBox(doc.getElementsByTagName("html")(0).ScrollTop.ToString)

                                '    End If
'End If

Kann es am Inhalt des WebBrowser liegen? Oder weil der Inhalt über ein Binding dargestellt wird?

Hm..

28.02.2018 - 08:20 Uhr

Konnte das denn jetzt mal jemand nachstellen?

Dim htmlDoc As HtmlDocument = wb.Document
Dim scrollTop As Integer = htmlDoc.GetElementsByTagName("HTML")(0).ScrollTop

Bei mir klappt es wie gesagt nur beim ersten mal, einen alternativen WebBroswer werde ich mir mal ansehen, wüsste trotzdem gern wo der Fehler liegt, falls jemand eine Idee hat.

26.02.2018 - 16:24 Uhr

Was wäre denn ein anderes? Kenn in WPF nur das eine.

26.02.2018 - 14:46 Uhr

Der Readystate steht im ersten Fall (wo keine Fehlermeldung kommt) auf complete
und beim zweiten Mal ebenso auf Complete wo allerdings die Fehlermeldung erscheint.

26.02.2018 - 13:36 Uhr

Nein, ich mach ja das gleiche und krieg dann die Fehlermeldung.

26.02.2018 - 13:29 Uhr

Hallo zusammen,

hat jemand schon mal versucht die ScrollPosition vom WebBrowser rauszubekommen?

Ich versuch es jetzt schon einige Zeit, krieg ich sie auch beim ersten mal zurück, beim nächsten mal dann aber nur noch eine Fehlermeldung .. > Fehlermeldung:

"Ausnahme von HRESULT: 0x800A01B6 / NotSupportedException"

Aktuell bekomme ich sie so :

If WebBrowser.Document IsNot Nothing Then

Dim htmlDoc As HTMLDocument = WebBrowser.Document

If htmlDoc IsNot Nothing Then

With htmlDoc.getElementsByTagName("HTML")(0)

MsgBox(.ScrollLeft)

MsgBox(.ScrollTop)

End With

End If

End If

Grüße

22.02.2018 - 14:26 Uhr

Oder ein PopUp.

Das kenn ich noch gar nicht.

Grüße

22.02.2018 - 13:43 Uhr

Eine ComboBox die eine ListBox enthält wo ich mir mehrere Einträge gleichzeitig auswählen kann.

So wie ich es oben bereits beschrieben habe.

22.02.2018 - 13:04 Uhr

Servus,

ja die Einträge hab ich auch schon gefunden, allerdings wollte ich mir jetzt keine neue ComboBox basteln.

<ComboBoxItem>
                                        
                                        <ScrollViewer HorizontalScrollBarVisibility="Hidden" VerticalScrollBarVisibility="Visible">

                                            <ListBox ItemsSource="{Binding Kontrollwerkzeug_Onlinesortiment_Einzelartikel_bearbeiten_GrpSKU}" DisplayMemberPath="GrpSKU">



                                            </ListBox>

                                        </ScrollViewer>

                                        
                                        
                                    </ComboBoxItem>

Das klappt zum Beispiel ganz gut, nur noch nicht so wie ich mir das ganze vorstelle.

22.02.2018 - 12:59 Uhr

Hallo liebe Community,

hat jemand das schon mal hinbekommen bzw Erfahrungen oder eventuell einen alternativen Vorschlag?

Ich möchte quasi eine Combobox die als Item eine Listbox hat, so das ich dann via MultiSelection die Items aus der Listbox auswählen kann, allerdings möchte ich die Platzsparende Variante der Combobox beibehalten (Aufklappbar) .. ich könnte das ganze auch in einen Expander auslagern, aber eventuell klappt es ja auch so, allerdings hab ich bis dato nicht hinbekommen.

Grüße

02.11.2017 - 13:41 Uhr

Liegt das an den Enter bzw. ExitActions?
Weil ich habe mir ja extra MultiTrigger definiert die das abfangen sollten
in beiden ist ja definiert das sie jeweils nur bei IsSelected=True oder IsSelected=False reagieren sollen.

02.11.2017 - 12:55 Uhr

Hä .. das macht doch überhaupt keinen Sinn 8o

Aber du hast recht, allerdings hab ich mal in den ersten Trigger ein paar Fontanimation und Shadoweffects hinzugefügt, er geht in den Trigger und erfüllt auch seine Aufgabe ..

Aber das mit den Farben ist mir ein Rätsel

02.11.2017 - 11:18 Uhr

Aktuell hab ich aber das gewünschte Ergebnis :

                        <!-- IsSelected -->

                        <MultiTrigger>

                            <MultiTrigger.Conditions>

                                <Condition Property="IsSelected" Value="True"/>
                                <Condition Property="IsEnabled"  Value="True"/>

                            </MultiTrigger.Conditions>

                            <MultiTrigger.Setters>

                                <Setter Property="FontWeight" Value="Bold"/>
                                <Setter Property="Foreground" Value="White"/>

                            </MultiTrigger.Setters>

                            <MultiTrigger.EnterActions>

                                <BeginStoryboard>

                                    <Storyboard>

                                        <!-- Background -->

                                        <ColorAnimationUsingKeyFrames Storyboard.TargetProperty="Background.(GradientBrush.GradientStops)[0].(GradientStop.Color)">

                                            <EasingColorKeyFrame KeyTime="0:0:1" Value="#58ACFA"/>

                                        </ColorAnimationUsingKeyFrames>

                                        <ColorAnimationUsingKeyFrames Storyboard.TargetProperty="Background.(GradientBrush.GradientStops)[1].(GradientStop.Color)">

                                            <EasingColorKeyFrame KeyTime="0:0:1" Value="#81BEF7"/>

                                        </ColorAnimationUsingKeyFrames>

                                        <ColorAnimationUsingKeyFrames Storyboard.TargetProperty="Background.(GradientBrush.GradientStops)[2].(GradientStop.Color)">

                                            <EasingColorKeyFrame KeyTime="0:0:1" Value="#58ACFA"/>

                                        </ColorAnimationUsingKeyFrames>

                                        <ColorAnimationUsingKeyFrames Storyboard.TargetProperty="Background.(GradientBrush.GradientStops)[3].(GradientStop.Color)">

                                            <EasingColorKeyFrame KeyTime="0:0:1" Value="#4F81BD"/>

                                        </ColorAnimationUsingKeyFrames>

                                    </Storyboard>

                                </BeginStoryboard>

                            </MultiTrigger.EnterActions>

                            <MultiTrigger.ExitActions>

                                <BeginStoryboard>

                                    <Storyboard>

                                        <!-- Background -->

                                        <ColorAnimationUsingKeyFrames Storyboard.TargetProperty="Background.(GradientBrush.GradientStops)[0].(GradientStop.Color)">

                                            <EasingColorKeyFrame KeyTime="0:0:1" Value="#D8D8D8"/>

                                        </ColorAnimationUsingKeyFrames>

                                        <ColorAnimationUsingKeyFrames Storyboard.TargetProperty="Background.(GradientBrush.GradientStops)[1].(GradientStop.Color)">

                                            <EasingColorKeyFrame KeyTime="0:0:1" Value="#E6E6E6"/>

                                        </ColorAnimationUsingKeyFrames>

                                        <ColorAnimationUsingKeyFrames Storyboard.TargetProperty="Background.(GradientBrush.GradientStops)[2].(GradientStop.Color)">

                                            <EasingColorKeyFrame KeyTime="0:0:1" Value="#D8D8D8"/>

                                        </ColorAnimationUsingKeyFrames>

                                        <ColorAnimationUsingKeyFrames Storyboard.TargetProperty="Background.(GradientBrush.GradientStops)[3].(GradientStop.Color)">

                                            <EasingColorKeyFrame KeyTime="0:0:1" Value="#A4A4A4"/>

                                        </ColorAnimationUsingKeyFrames>

                                    </Storyboard>

                                </BeginStoryboard>

                            </MultiTrigger.ExitActions>

                        </MultiTrigger>

                        <!-- IsMouseOver -->

                        <MultiTrigger>

                            <MultiTrigger.Conditions>

                                <Condition Property="IsMouseOver" Value="False"/>
                                <Condition Property="IsSelected"  Value="False"/>
                                <Condition Property="IsEnabled"   Value="True"/>

                            </MultiTrigger.Conditions>

                            <MultiTrigger.EnterActions>

                                <BeginStoryboard>

                                    <Storyboard>

                                        <!-- Background -->

                                        <ColorAnimationUsingKeyFrames Storyboard.TargetProperty="Background.(GradientBrush.GradientStops)[0].(GradientStop.Color)">

                                            <EasingColorKeyFrame KeyTime="0:0:1" Value="#D8D8D8"/>

                                        </ColorAnimationUsingKeyFrames>

                                        <ColorAnimationUsingKeyFrames Storyboard.TargetProperty="Background.(GradientBrush.GradientStops)[1].(GradientStop.Color)">

                                            <EasingColorKeyFrame KeyTime="0:0:1" Value="#E6E6E6"/>

                                        </ColorAnimationUsingKeyFrames>

                                        <ColorAnimationUsingKeyFrames Storyboard.TargetProperty="Background.(GradientBrush.GradientStops)[2].(GradientStop.Color)">

                                            <EasingColorKeyFrame KeyTime="0:0:1" Value="#D8D8D8"/>

                                        </ColorAnimationUsingKeyFrames>

                                        <ColorAnimationUsingKeyFrames Storyboard.TargetProperty="Background.(GradientBrush.GradientStops)[3].(GradientStop.Color)">

                                            <EasingColorKeyFrame KeyTime="0:0:1" Value="#A4A4A4"/>

                                        </ColorAnimationUsingKeyFrames>

                                        <!-- Foreground -->

                                        <ColorAnimation Storyboard.TargetProperty="(Foreground).(SolidColorBrush.Color)" From="White" To="Black" Duration="0:0:0:1"/>

                                    </Storyboard>

                                </BeginStoryboard>

                            </MultiTrigger.EnterActions>

                            <MultiTrigger.ExitActions>

                                <BeginStoryboard>

                                    <Storyboard>

                                        <!-- Background -->

                                        <ColorAnimationUsingKeyFrames Storyboard.TargetProperty="Background.(GradientBrush.GradientStops)[0].(GradientStop.Color)">

                                            <EasingColorKeyFrame KeyTime="0:0:1" Value="#58ACFA"/>

                                        </ColorAnimationUsingKeyFrames>

                                        <ColorAnimationUsingKeyFrames Storyboard.TargetProperty="Background.(GradientBrush.GradientStops)[1].(GradientStop.Color)">

                                            <EasingColorKeyFrame KeyTime="0:0:1" Value="#81BEF7"/>

                                        </ColorAnimationUsingKeyFrames>

                                        <ColorAnimationUsingKeyFrames Storyboard.TargetProperty="Background.(GradientBrush.GradientStops)[2].(GradientStop.Color)">

                                            <EasingColorKeyFrame KeyTime="0:0:1" Value="#58ACFA"/>

                                        </ColorAnimationUsingKeyFrames>

                                        <ColorAnimationUsingKeyFrames Storyboard.TargetProperty="Background.(GradientBrush.GradientStops)[3].(GradientStop.Color)">

                                            <EasingColorKeyFrame KeyTime="0:0:1" Value="#4F81BD"/>

                                        </ColorAnimationUsingKeyFrames>

                                        <!-- Foreground -->

                                        <ColorAnimation Storyboard.TargetProperty="(Foreground).(SolidColorBrush.Color)" From="Black" To="White" Duration="0:0:0:1"/>

                                    </Storyboard>

                                </BeginStoryboard>

                            </MultiTrigger.ExitActions>

                        </MultiTrigger>
02.11.2017 - 11:06 Uhr

Seltsamerweise funktioniert das IsMouseOver False Phänomen bei mir nur solange .. wie ich kein Item Selektiert haben, nach der ersten Selektierung geht es dann wieder nicht mehr

EDIT : lag an der Reihenfolge der Trigger .. dieses Thema kostet mich noch alle nerven ⚠

02.11.2017 - 10:02 Uhr

Servus p!lle,

danke für die Antwort .. und danke für die Idee, wieso hast du das überhaupt so ausprobiert?

Tatsächlich reagieren die Trigger bei mir wie gewünscht wenn ich mit dem IsMouseOver = False arbeite..

Merkwürdig 🤔

EDIT : Sind beide Trigger True wird ja eigentlich nur der letzte ausgeführt.

02.11.2017 - 06:53 Uhr

Jemand vielleicht eine Idee? 😕

01.11.2017 - 16:22 Uhr

Na ich möchte eigentlich wenn das TabItem IsSelected = True das es einen festen Farbwert annimmt der sich wieder zurücksetzt sobald das TabItem nicht mehr selektiert ist.

Wenn das TabItem nicht mehr selektiert ist, aber die Maus über dem Element ist soll es sich verfärben, selektiert man das Item dann soll es wieder den festen Farbwert annehmen.. selektiert man es nicht und man geht mit der Maus von dem Element weg, soll es wieder seinen Default Farbwert annehmen.

Das spinnt aber alles ..

Farbwert :

    <!-- Default - First TabItem Background -->

    <LinearGradientBrush x:Key="Default_First_TabItem_Background" StartPoint="0,0" EndPoint="0,1">

        <GradientStop Color="#D8D8D8" Offset="0.01"/>
        <GradientStop Color="#E6E6E6" Offset="0.3" />
        <GradientStop Color="#D8D8D8" Offset="0.6" />
        <GradientStop Color="#A4A4A4" Offset="0.95"/>

    </LinearGradientBrush>
01.11.2017 - 15:38 Uhr

Vielleicht kannst du mir ja im anderen Thread dazu helfen.

01.11.2017 - 15:35 Uhr

Das funktioniert eigentlich soweit sehr gut, nur überschreibt mir mein MouseOver Trigger irgendwie meine Werte vom IsSelected.. Bzw verfälscht irgendwie das Ergebnis..

Jeder Trigger für sich erfüllt seine Aufgabe, aber in Kombination.. spinnt es die ganze Zeit rum.

    <Style x:Key="First_TabItem_Style" TargetType="{x:Type TabItem}">

        <Setter Property="Background" Value="{StaticResource Default_First_TabItem_Background}"/>
        
        <Setter Property="FontSize" Value="15"/>
        
        <Setter Property="Template">
            
            <Setter.Value>
                
                <ControlTemplate TargetType="{x:Type TabItem}">
                    
                    <Grid>

                        <StackPanel Orientation="Horizontal" Height="50">

                            <Border Background="{TemplateBinding Background}"  Width="20"                      CornerRadius="20, 0, 0, 0"                          x:Name="Border_Left_Corner"     />

                            <Border Background="{TemplateBinding Background}"             Margin="-1, 0, 0, 0"                                                     x:Name="Border_First_Rectangle"  >

                                <ContentPresenter ContentSource="Header" HorizontalAlignment="Center" VerticalAlignment="Center" Margin="5, 0, 5, 0"                                                                    />
                                
                            </Border>

                            <Path   Fill="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=Background}"        Width="35" Margin="-0.5, 0, 0, 0"                           Data="M 0,0 35,25 0,50" x:Name="Path_Right_Triangle"    />

                        </StackPanel>
                        
                    </Grid>
                    
                    <ControlTemplate.Triggers>

                        <!-- IsMouseOver -->

                        <MultiTrigger>

                            <MultiTrigger.Conditions>

                                <Condition Property="IsMouseOver" Value="True"/>
                                <Condition Property="IsSelected"  Value="False"/>
                                <Condition Property="IsEnabled"   Value="True"/>

                            </MultiTrigger.Conditions>

                            <MultiTrigger.EnterActions>

                                <BeginStoryboard>

                                    <Storyboard>

                                        <!-- Background -->

                                        <ColorAnimationUsingKeyFrames Storyboard.TargetProperty="Background.(GradientBrush.GradientStops)[0].(GradientStop.Color)">

                                            <EasingColorKeyFrame KeyTime="0:0:1" Value="#58ACFA"/>

                                        </ColorAnimationUsingKeyFrames>

                                        <ColorAnimationUsingKeyFrames Storyboard.TargetProperty="Background.(GradientBrush.GradientStops)[1].(GradientStop.Color)">

                                            <EasingColorKeyFrame KeyTime="0:0:1" Value="#81BEF7"/>

                                        </ColorAnimationUsingKeyFrames>

                                        <ColorAnimationUsingKeyFrames Storyboard.TargetProperty="Background.(GradientBrush.GradientStops)[2].(GradientStop.Color)">

                                            <EasingColorKeyFrame KeyTime="0:0:1" Value="#58ACFA"/>

                                        </ColorAnimationUsingKeyFrames>

                                        <ColorAnimationUsingKeyFrames Storyboard.TargetProperty="Background.(GradientBrush.GradientStops)[3].(GradientStop.Color)">

                                            <EasingColorKeyFrame KeyTime="0:0:1" Value="#4F81BD"/>

                                        </ColorAnimationUsingKeyFrames>

                                        <!-- Foreground -->

                                        <ColorAnimation Storyboard.TargetProperty="(Foreground).(SolidColorBrush.Color)" From="Black" To="White" Duration="0:0:0:1"/>

                                    </Storyboard>

                                </BeginStoryboard>

                            </MultiTrigger.EnterActions>

                            <MultiTrigger.ExitActions>

                                <BeginStoryboard>

                                    <Storyboard>

                                        <!-- Background -->

                                        <ColorAnimationUsingKeyFrames Storyboard.TargetProperty="Background.(GradientBrush.GradientStops)[0].(GradientStop.Color)">

                                            <EasingColorKeyFrame KeyTime="0:0:1" Value="#D8D8D8"/>

                                        </ColorAnimationUsingKeyFrames>

                                        <ColorAnimationUsingKeyFrames Storyboard.TargetProperty="Background.(GradientBrush.GradientStops)[1].(GradientStop.Color)">

                                            <EasingColorKeyFrame KeyTime="0:0:1" Value="#E6E6E6"/>

                                        </ColorAnimationUsingKeyFrames>

                                        <ColorAnimationUsingKeyFrames Storyboard.TargetProperty="Background.(GradientBrush.GradientStops)[2].(GradientStop.Color)">

                                            <EasingColorKeyFrame KeyTime="0:0:1" Value="#D8D8D8"/>

                                        </ColorAnimationUsingKeyFrames>

                                        <ColorAnimationUsingKeyFrames Storyboard.TargetProperty="Background.(GradientBrush.GradientStops)[3].(GradientStop.Color)">

                                            <EasingColorKeyFrame KeyTime="0:0:1" Value="#A4A4A4"/>

                                        </ColorAnimationUsingKeyFrames>

                                        <!-- Foreground -->

                                        <ColorAnimation Storyboard.TargetProperty="(Foreground).(SolidColorBrush.Color)" From="White" To="Black" Duration="0:0:0:1"/>

                                    </Storyboard>

                                </BeginStoryboard>

                            </MultiTrigger.ExitActions>

                        </MultiTrigger>

                        <!-- IsSelected -->
                        
                        <MultiTrigger>
                            
                            <MultiTrigger.Conditions>
                                
                                <Condition Property="IsSelected" Value="True"/>
                                <Condition Property="IsEnabled"  Value="True"/>
                                
                            </MultiTrigger.Conditions>
                            
                            <MultiTrigger.Setters>
                                
                                <Setter Property="FontWeight" Value="Bold"/>
                                <Setter Property="Foreground" Value="White"/>
                                
                            </MultiTrigger.Setters>
                            
                            <MultiTrigger.EnterActions>
                                
                                <BeginStoryboard>
                                    
                                    <Storyboard>
                                        
                                        <!-- Background -->
                                        
                                        <ColorAnimationUsingKeyFrames Storyboard.TargetProperty="Background.(GradientBrush.GradientStops)[0].(GradientStop.Color)">

                                            <EasingColorKeyFrame KeyTime="0:0:1" Value="#58ACFA"/>
                                            
                                        </ColorAnimationUsingKeyFrames>

                                        <ColorAnimationUsingKeyFrames Storyboard.TargetProperty="Background.(GradientBrush.GradientStops)[1].(GradientStop.Color)">

                                            <EasingColorKeyFrame KeyTime="0:0:1" Value="#81BEF7"/>

                                        </ColorAnimationUsingKeyFrames>

                                        <ColorAnimationUsingKeyFrames Storyboard.TargetProperty="Background.(GradientBrush.GradientStops)[2].(GradientStop.Color)">

                                            <EasingColorKeyFrame KeyTime="0:0:1" Value="#58ACFA"/>

                                        </ColorAnimationUsingKeyFrames>

                                        <ColorAnimationUsingKeyFrames Storyboard.TargetProperty="Background.(GradientBrush.GradientStops)[3].(GradientStop.Color)">

                                            <EasingColorKeyFrame KeyTime="0:0:1" Value="#4F81BD"/>

                                        </ColorAnimationUsingKeyFrames>

                                    </Storyboard>
                                    
                                </BeginStoryboard>
                                
                            </MultiTrigger.EnterActions>

                            <MultiTrigger.ExitActions>

                                <BeginStoryboard>

                                    <Storyboard>

                                        <!-- Background -->

                                        <ColorAnimationUsingKeyFrames Storyboard.TargetProperty="Background.(GradientBrush.GradientStops)[0].(GradientStop.Color)">

                                            <EasingColorKeyFrame KeyTime="0:0:1" Value="#D8D8D8"/>

                                        </ColorAnimationUsingKeyFrames>

                                        <ColorAnimationUsingKeyFrames Storyboard.TargetProperty="Background.(GradientBrush.GradientStops)[1].(GradientStop.Color)">

                                            <EasingColorKeyFrame KeyTime="0:0:1" Value="#E6E6E6"/>

                                        </ColorAnimationUsingKeyFrames>

                                        <ColorAnimationUsingKeyFrames Storyboard.TargetProperty="Background.(GradientBrush.GradientStops)[2].(GradientStop.Color)">

                                            <EasingColorKeyFrame KeyTime="0:0:1" Value="#D8D8D8"/>

                                        </ColorAnimationUsingKeyFrames>

                                        <ColorAnimationUsingKeyFrames Storyboard.TargetProperty="Background.(GradientBrush.GradientStops)[3].(GradientStop.Color)">

                                            <EasingColorKeyFrame KeyTime="0:0:1" Value="#A4A4A4"/>

                                        </ColorAnimationUsingKeyFrames>

                                    </Storyboard>

                                </BeginStoryboard>

                            </MultiTrigger.ExitActions>

                        </MultiTrigger>
                        
                    </ControlTemplate.Triggers>
                    
                </ControlTemplate>
                
            </Setter.Value>
            
        </Setter>
        
    </Style>
01.11.2017 - 15:17 Uhr

Naja p!lle du wirst schon gewusst haben das ich den MultiTrigger meinte ..

Ja, hab mich ein wenig doof ausgedrückt, aber der Thread kann sowieso gelöscht werden, konnte die Lösung selber herausfinden und werde in einem anderen Thread die Lösung posten.

Trotzdem danke das du dir die mühe gemacht hast 😃

01.11.2017 - 14:24 Uhr

Aber wie weise ich dann der ColorAnimation einen LinearGradientBrush zu?

Edit : Ich glaub ich habs gleich, danke für den Denkanstoß

Grüße

01.11.2017 - 14:13 Uhr

Servus,

irgendwie funktioniert mein Trigger aktuell nur nach der ersten Nutzung, danach nicht mehr.

Mein MultiTrigger funktioniert stattdessen die ganze Zeit.

Jemand eine Idee?

Grüße

<!-- First TabItem -->
    
    <Style x:Key="First_TabItem_Style" TargetType="{x:Type TabItem}">

        <Setter Property="FontSize" Value="15"/>
        
        <Setter Property="Template">
            
            <Setter.Value>
                
                <ControlTemplate TargetType="{x:Type TabItem}">
                    
                    <Grid>

                        <StackPanel Orientation="Horizontal" Height="50">

                            <Border Background="{StaticResource Default_First_TabItem_Background}"  Width="20"                      CornerRadius="20, 0, 0, 0"                          x:Name="Border_Left_Corner"     />

                            <Border Background="{StaticResource Default_First_TabItem_Background}"             Margin="-1, 0, 0, 0"                                                     x:Name="Border_First_Rectangle"  >

                                <ContentPresenter ContentSource="Header" HorizontalAlignment="Center" VerticalAlignment="Center" Margin="5, 0, 5, 0"                                                                    />
                                
                            </Border>

                            <Path   Fill="{StaticResource Default_First_TabItem_Background}"        Width="35" Margin="-0.5, 0, 0, 0"                           Data="M 0,0 35,25 0,50" x:Name="Path_Right_Triangle"    />

                        </StackPanel>
                        
                    </Grid>
                    
                    <ControlTemplate.Triggers>

                        <MultiTrigger>

                            <MultiTrigger.Conditions>

                                <Condition Property="IsMouseOver" Value="False"/>
                                <Condition Property="IsEnabled"   Value="True" />
                                <Condition Property="IsSelected"  Value="True"/>

                            </MultiTrigger.Conditions>

                            <MultiTrigger.EnterActions>

                                <BeginStoryboard>

                                    <Storyboard>

                                        <!-- Background -->

                                        <ColorAnimation Storyboard.TargetName="Border_First_Rectangle" Storyboard.TargetProperty="Background.GradientStops[0].Color" To="#58ACFA" Duration="0:0:1"/>
                                        <ColorAnimation Storyboard.TargetName="Border_First_Rectangle" Storyboard.TargetProperty="Background.GradientStops[1].Color" To="#81BEF7" Duration="0:0:1"/>
                                        <ColorAnimation Storyboard.TargetName="Border_First_Rectangle" Storyboard.TargetProperty="Background.GradientStops[2].Color" To="#58ACFA" Duration="0:0:1"/>
                                        <ColorAnimation Storyboard.TargetName="Border_First_Rectangle" Storyboard.TargetProperty="Background.GradientStops[3].Color" To="#4F81BD" Duration="0:0:1"/>

                                        <!-- Foreground -->

                                        <ColorAnimation Storyboard.TargetProperty="(Foreground).(SolidColorBrush.Color)" From="Black" To="Green" Duration="0:0:0:1"/>

                                    </Storyboard>

                                </BeginStoryboard>

                            </MultiTrigger.EnterActions>

                            <MultiTrigger.ExitActions>

                                <BeginStoryboard>

                                    <Storyboard>

                                        <!-- Background -->

                                        <ColorAnimation Storyboard.TargetName="Border_First_Rectangle" Storyboard.TargetProperty="Background.GradientStops[0].Color" To="#D8D8D8" Duration="0:0:1"/>
                                        <ColorAnimation Storyboard.TargetName="Border_First_Rectangle" Storyboard.TargetProperty="Background.GradientStops[1].Color" To="#E6E6E6" Duration="0:0:1"/>
                                        <ColorAnimation Storyboard.TargetName="Border_First_Rectangle" Storyboard.TargetProperty="Background.GradientStops[2].Color" To="#D8D8D8" Duration="0:0:1"/>
                                        <ColorAnimation Storyboard.TargetName="Border_First_Rectangle" Storyboard.TargetProperty="Background.GradientStops[3].Color" To="#A4A4A4" Duration="0:0:1"/>

                                        <!-- Foreground -->

                                        <ColorAnimation Storyboard.TargetProperty="(Foreground).(SolidColorBrush.Color)" From="White" To="yellow" Duration="0:0:0:1"/>

                                    </Storyboard>

                                </BeginStoryboard>

                            </MultiTrigger.ExitActions>

                        </MultiTrigger>

                        <!-- IsMouseOver -->

                        <MultiTrigger>

                            <MultiTrigger.Conditions>

                                <Condition Property="IsMouseOver" Value="True" />
                                <Condition Property="IsEnabled"   Value="True" />
                                <Condition Property="IsSelected"  Value="False"/>

                            </MultiTrigger.Conditions>

                            <MultiTrigger.EnterActions>

                                <BeginStoryboard>

                                    <Storyboard>

                                        <!-- Background -->

                                        <ColorAnimation Storyboard.TargetName="Border_First_Rectangle" Storyboard.TargetProperty="Background.GradientStops[0].Color" To="#58ACFA" Duration="0:0:1"/>
                                        <ColorAnimation Storyboard.TargetName="Border_First_Rectangle" Storyboard.TargetProperty="Background.GradientStops[1].Color" To="#81BEF7" Duration="0:0:1"/>
                                        <ColorAnimation Storyboard.TargetName="Border_First_Rectangle" Storyboard.TargetProperty="Background.GradientStops[2].Color" To="#58ACFA" Duration="0:0:1"/>
                                        <ColorAnimation Storyboard.TargetName="Border_First_Rectangle" Storyboard.TargetProperty="Background.GradientStops[3].Color" To="#4F81BD" Duration="0:0:1"/>

                                        <!-- Foreground -->

                                        <ColorAnimation Storyboard.TargetProperty="(Foreground).(SolidColorBrush.Color)" From="Black" To="White" Duration="0:0:0:1"/>

                                    </Storyboard>

                                </BeginStoryboard>

                            </MultiTrigger.EnterActions>

                            <MultiTrigger.ExitActions>

                                <BeginStoryboard>

                                    <Storyboard>

                                        <!-- Background -->

                                        <ColorAnimation Storyboard.TargetName="Border_First_Rectangle" Storyboard.TargetProperty="Background.GradientStops[0].Color" To="#D8D8D8" Duration="0:0:1"/>
                                        <ColorAnimation Storyboard.TargetName="Border_First_Rectangle" Storyboard.TargetProperty="Background.GradientStops[1].Color" To="#E6E6E6" Duration="0:0:1"/>
                                        <ColorAnimation Storyboard.TargetName="Border_First_Rectangle" Storyboard.TargetProperty="Background.GradientStops[2].Color" To="#D8D8D8" Duration="0:0:1"/>
                                        <ColorAnimation Storyboard.TargetName="Border_First_Rectangle" Storyboard.TargetProperty="Background.GradientStops[3].Color" To="#A4A4A4" Duration="0:0:1"/>

                                        <!-- Foreground -->

                                        <ColorAnimation Storyboard.TargetProperty="(Foreground).(SolidColorBrush.Color)" From="White" To="Black" Duration="0:0:0:1"/>

                                    </Storyboard>

                                </BeginStoryboard>

                            </MultiTrigger.ExitActions>
                            
                        </MultiTrigger>  
                        
                    </ControlTemplate.Triggers>
                    
                </ControlTemplate>
                
            </Setter.Value>
            
        </Setter>
        
    </Style>
01.11.2017 - 10:37 Uhr

Ah okay verstehe :

<EventTrigger RoutedEvent="Border.MouseEnter" SourceName="Border">
                            <BeginStoryboard>
                                <Storyboard>
                                    <ColorAnimation
                Storyboard.TargetName="Border"
                Storyboard.TargetProperty="Background.GradientStops[0].Color"
                 To="Red"
                Duration="0:0:3" AutoReverse="True" />
                                </Storyboard>
                            </BeginStoryboard>
                        </EventTrigger>

Damit funktioniert es..

Danke für die Hilfe 😄

01.11.2017 - 10:29 Uhr

Irgendwie scheint es hiermit zusammenzuhängen : Background="{StaticResource Default_TabItem_Background}"

01.11.2017 - 10:17 Uhr

Servus,

in letzter Zeit nehm ich das Forum ganz schön in Anspruch,

ich versuche gerade meinen Custom TabItem Style eine MouseOver ColorAnimation beizubringen, allerdings funktioniert das ganze nicht, wenn ich seltsamerweise in einem normalen Trigger die Background Eigenschaft zuweise, funktioniert die Animation plötzlich?

Kann mir eventuell jemand weiterhelfen?

XAML :

<Style x:Key="Middle_TabItem_Style" TargetType="{x:Type TabItem}">

        <Setter Property="FontSize" Value="17"/>

        <Setter Property="Template">

            <Setter.Value>

                <ControlTemplate TargetType="{x:Type TabItem}">

                    <Grid>

                        <StackPanel Height="50" Orientation="Horizontal" Margin="-35, 0, 0, 0">

                            <Path x:Name="First_Path" Width="35" Data="M0,0 35,25 0,50 35,50 35,0" Fill="{StaticResource Default_TabItem_Background}"/>

                            <Border x:Name="Border" Background="{StaticResource Default_TabItem_Background}" Margin="-1, 0, 0, 0">

                                <ContentPresenter ContentSource="Header" HorizontalAlignment="Center" VerticalAlignment="Center" Margin="5, 0, 5, 0"/>

                            </Border>

                            <Path x:Name="Last_Path" Width="35" Data="M0,0 35,0 0,25 35,50 0,50" Fill="{StaticResource Default_TabItem_Background}" Margin="-1, 0, 0, 0"/>

                        </StackPanel>

                    </Grid>
                    
                    <ControlTemplate.Triggers>
                        
                        <Trigger Property="IsMouseOver" Value="True">
                            
                            <!--<Setter Property="FontSize" Value="5"/>-->
                            
                            <!--<Setter TargetName="Border" Property="Background" Value="Red"/>-->
                            
                        </Trigger>
                        
                        <!--<EventTrigger RoutedEvent="MouseEnter">
                            
                            <EventTrigger.Actions>
                                
                                <BeginStoryboard>
                                    
                                    <Storyboard >

                                        <ColorAnimation Storyboard.TargetName="Border" Storyboard.TargetProperty="(Border.Background).(SolidColorBrush.Color)" To="#6990EE90" Duration="0:0:0.3" />

                                    </Storyboard>
                                    
                                </BeginStoryboard>
                                
                            </EventTrigger.Actions>
                            
                        </EventTrigger>-->

                    </ControlTemplate.Triggers>

                </ControlTemplate>

            </Setter.Value>

        </Setter>

    </Style>
30.10.2017 - 14:35 Uhr

Servus,

danke für eure beiden Antworten, die haben mir sehr geholfen.

Hier mein Style Selector :

Public Class TabItemContainerStyleSelector

    Inherits StyleSelector

#Region "Properties"

    Public Property First_TabItem_Style As Style

    Public Property Default_TabItem_Style As Style

    Public Property Last_TabItem_Style As Style

#End Region

#Region "Funktionen"

    Public Overrides Function SelectStyle(item As Object, container As System.Windows.DependencyObject) As System.Windows.Style

        ' --- interne Variablen Deklaration --- '

        Dim TabItem As TabItem = item

        Dim TabControl As TabControl = TabItem.Parent

        Try

            Select Case ItemsControl.ItemsControlFromItemContainer(TabItem).ItemContainerGenerator.IndexFromContainer(TabItem) + 1

                Case 1

                    Return First_TabItem_Style

                Case TabControl.Items.Count

                    Return Last_TabItem_Style

                Case Else

                    Return Default_TabItem_Style

            End Select

        Catch ex As Exception

        End Try

        Return Default_TabItem_Style

    End Function

#End Region
27.10.2017 - 12:40 Uhr

Gibt sicherlich viele Wege die zum Ziel führen, aber hier mein Lösungsansatz :

        ' --- interne Variablen Deklaration --- '

        Dim Bitmap As System.Drawing.Bitmap

        Dim BitmapImage As New System.Windows.Media.Imaging.BitmapImage

        Dim MemoryStream As New System.IO.MemoryStream

        Try

            Bitmap = Screenshot.get_Bitmap_From_Screenshot(Me)

            If Bitmap IsNot Nothing Then

                Dim PrintDialog As New System.Windows.Controls.PrintDialog

                PrintDialog.PrintTicket.PageOrientation = Printing.PageOrientation.Landscape

                If PrintDialog.ShowDialog = True Then

                    Dim Image As New Image

                    ' --- Größenangabe --- '

                    Image.Width = PrintDialog.PrintableAreaWidth

                    Image.Height = PrintDialog.PrintableAreaHeight

                    ' --- Image Befüllung --- '

                    Bitmap.Save(MemoryStream, System.Drawing.Imaging.ImageFormat.Bmp)

                    BitmapImage.BeginInit()

                    BitmapImage.StreamSource = New System.IO.MemoryStream(MemoryStream.ToArray)

                    BitmapImage.EndInit()

                    Image.Source = BitmapImage

                    PrintDialog.PrintVisual(Image, "Servicemanagementsystem")

                End If

            End If

        Catch ex As Exception
            Fehlerbehandlung = New Fehlerbehandlung
            Fehlerbehandlung.Fehlermeldung = ex
            Fehlerbehandlung.ShowDialog()
        End Try
    Public Function get_Bitmap_From_Screenshot(ByVal Visual As Visual) As System.Drawing.Image

        ' --- interne Variablen Deklaration --- ' 

        Dim Bitmap As System.Drawing.Bitmap

        Dim DrawingVisual As New DrawingVisual

        Try

            ' --- Größe des Visual --- '

            Dim Rectangle As System.Windows.Rect = VisualTreeHelper.GetDescendantBounds(Visual)

            ' --- Konvertieren vom Visual in ein Bitmap Objekt --- '

            Dim RenderTargetBitmap As New RenderTargetBitmap(Convert.ToInt32(Rectangle.Width), Convert.ToInt32(Rectangle.Height), 96, 96, PixelFormats.Pbgra32)

            Using DrawingContext As DrawingContext = DrawingVisual.RenderOpen

                Dim VisualBrush As New VisualBrush(Visual)

                ' --- Rechteck zeichnen --- '

                DrawingContext.DrawRectangle(VisualBrush, Nothing, New System.Windows.Rect(New Point(), Rectangle.Size))

            End Using

            RenderTargetBitmap.Render(DrawingVisual)

            ' --- Bitmap --- '

            Dim PngBitmapEncoder As New PngBitmapEncoder

            PngBitmapEncoder.Frames.Add(BitmapFrame.Create(RenderTargetBitmap))

            Using MemoryStream = New System.IO.MemoryStream

                PngBitmapEncoder.Save(MemoryStream)

                Bitmap = New System.Drawing.Bitmap(MemoryStream)

            End Using

            Dim Image As System.Drawing.Image = DirectCast(Bitmap.Clone, System.Drawing.Image)

            Bitmap = New System.Drawing.Bitmap(Image.Width + 50, Image.Height + 50)

            Dim Graphics As System.Drawing.Graphics = System.Drawing.Graphics.FromImage(Bitmap)

            Graphics.DrawImage(Image, 25, 25)

            Return Bitmap

        Catch ex As Exception
            Fehlerbehandlung = New Fehlerbehandlung
            Fehlerbehandlung.Fehlermeldung = ex
            Fehlerbehandlung.ShowDialog()
        End Try

        Return Nothing

    End Function
26.10.2017 - 14:22 Uhr

Servus,

ich wollte das ganze dynamische gestalten, ich dachte ich könnte dem ItemContainerStyle

einen Style zuweisen der in sich ermittelt welches das erste TabItem ist und dem einen Style zuweisen würde, das letzte Tabitem ermittelt diesem einem Style zuweist und dann Defaultmäßig jedes dazwischen einen Style zuweist.

Kann man nachvollziehen was ich meine?

Grüße