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 _Cashisclay
Thema: Wpf - Textbox Binding 2 Variablen?
Am im Forum: GUI: WPF und XAML

Mein RangeSlider :

<UserControl x:Class="RangeSlider"
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
             xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
             xmlns:local="clr-namespace:Watchdog"
             mc:Ignorable="d" 
             d:DesignHeight="20" d:DesignWidth="300"     
             x:Name="root">

    <UserControl.Resources>
        
        <!-- Farbverlauf - Thumb -->
        
        <LinearGradientBrush x:Key="Thumb" StartPoint="0,0" EndPoint="0,1">
            <GradientStop Offset="0" Color="#f7f7f7"/>
            <GradientStop Offset="1" Color="#bcbcbc"/>
        </LinearGradientBrush>

        <!-- Style - Thumb -->
        
        <Style x:Key="Thumb_Style" TargetType="{x:Type Thumb}">
            <Setter Property="SnapsToDevicePixels" Value="true"/>
            <Setter Property="OverridesDefaultStyle" Value="true"/>
            <Setter Property="Height" Value="14"/>
            <Setter Property="Width" Value="14"/>
            <Setter Property="Template">
                <Setter.Value>
                    <ControlTemplate TargetType="{x:Type Thumb}">
                        <Ellipse Name="Ellipse" Fill="{StaticResource Thumb}" Stroke="#404040" StrokeThickness="1" />
                        
                        <ControlTemplate.Triggers>
                            <Trigger Property="IsMouseOver" Value="True">
                                <Setter TargetName="Ellipse" Property="Fill" Value="#808080"/>
                            </Trigger>
                            <Trigger Property="IsEnabled" Value="false">
                                <Setter TargetName="Ellipse" Property="Fill" Value="#EEEEEE"/>
                            </Trigger>
                        </ControlTemplate.Triggers>
                        
                    </ControlTemplate>
                </Setter.Value>
            </Setter>
        </Style>

        <!-- ControlTemplate - Slider -->
        
        <ControlTemplate x:Key="RangeSlider" TargetType="{x:Type Slider}">
            <Border SnapsToDevicePixels="true" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}">
                <Grid>
                    <Grid.RowDefinitions>
                        <RowDefinition Height="Auto"/>
                        <RowDefinition Height="Auto" MinHeight="{TemplateBinding MinHeight}"/>
                        <RowDefinition Height="Auto"/>
                    </Grid.RowDefinitions>

                    <Rectangle x:Name="PART_SelectionRange"/>

                    <Track x:Name="PART_Track" Grid.Row="1">
                        <Track.Thumb>
                            <Thumb x:Name="Thumb" Style="{StaticResource Thumb_Style}"/>
                        </Track.Thumb>
                    </Track>
                </Grid>
            </Border>
        </ControlTemplate>

    </UserControl.Resources>
    
    <Grid>
        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="10"/>
            <ColumnDefinition Width="*"/>
            <ColumnDefinition Width="10"/>
        </Grid.ColumnDefinitions>
        
        <Grid.RowDefinitions>
            <RowDefinition Height="20"/>
        </Grid.RowDefinitions>

        <Grid Grid.Column="1">
            <Border BorderThickness="2,0,2,0" BorderBrush="DarkGray" Margin="-2,0,-2,0"/>

            <Border BorderThickness="0,2,0,0" BorderBrush="DarkGray" VerticalAlignment="Center" Height="1" Margin="5,0,5,0"/>

            <Slider x:Name="LowerSlider" Minimum="{Binding ElementName=root, Path=Minimum}" Maximum="{Binding ElementName=root, Path=Maximum}" Value="{Binding ElementName=root, Path=LowerValue, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" Template="{StaticResource RangeSlider}"  Margin="0,0,10,0" ToolTip="Von" VerticalAlignment="Center"/>

            <Slider x:Name="UpperSlider" Minimum="{Binding ElementName=root, Path=Minimum}" Maximum="{Binding ElementName=root, Path=Maximum}" Value="{Binding ElementName=root, Path=UpperValue, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" Template="{StaticResource RangeSlider}"  Margin="10,0,0,0" ToolTip="Bis" VerticalAlignment="Center"/>
        </Grid>
    </Grid>
    
</UserControl>

Partial Public Class RangeSlider
    Inherits UserControl
    Implements ComponentModel.INotifyPropertyChanged

    Public Sub New()

        ' Dieser Aufruf ist für den Designer erforderlich.
        InitializeComponent()

        ' Fügen Sie Initialisierungen nach dem InitializeComponent()-Aufruf hinzu.

        Me.DataContext = Me
    End Sub

    Public Shared ReadOnly MinimumProperty As DependencyProperty = DependencyProperty.Register("Minimum", GetType(Double), GetType(RangeSlider), New UIPropertyMetadata(0.0))
    Public Shared ReadOnly LowerValueProperty As DependencyProperty = DependencyProperty.Register("LowerValue", GetType(Double), GetType(RangeSlider), New UIPropertyMetadata(0.0))
    Public Shared ReadOnly UpperValueProperty As DependencyProperty = DependencyProperty.Register("UpperValue", GetType(Double), GetType(RangeSlider), New UIPropertyMetadata(0.0))
    Public Shared ReadOnly MaximumProperty As DependencyProperty = DependencyProperty.Register("Maximum", GetType(Double), GetType(RangeSlider), New UIPropertyMetadata(1.0))

    Public Shared ReadOnly IntervallProperty As DependencyProperty = DependencyProperty.Register("Intervall", GetType(Integer), GetType(RangeSlider), New UIPropertyMetadata())

    Public Property Minimum As Double
        Get
            Return CDbl(GetValue(MinimumProperty))
        End Get
        Set(value As Double)
            SetValue(MinimumProperty, value)
        End Set
    End Property
    Public Property LowerValue As Double
        Get
            Return CDbl(GetValue(LowerValueProperty))
        End Get
        Set(value As Double)
            SetValue(LowerValueProperty, value)
            Propertychange("LowerValue")
        End Set
    End Property
    Public Property UpperValue As Double
        Get
            Return CDbl(GetValue(UpperValueProperty))
        End Get
        Set(value As Double)
            SetValue(UpperValueProperty, value)
        End Set
    End Property
    Public Property Maximum As Double
        Get
            Return CDbl(GetValue(MaximumProperty))
        End Get
        Set(value As Double)
            SetValue(MaximumProperty, value)
        End Set
    End Property
    Public Property Intervall As Integer
        Get
            Return Convert.ToInt32(GetValue(IntervallProperty))
        End Get
        Set(value As Integer)

        End Set
    End Property


    Private Sub LowerSlider_ValueChanged(sender As System.Object, e As System.Windows.RoutedPropertyChangedEventArgs(Of System.Double)) Handles LowerSlider.ValueChanged
        UpperSlider.Value = Math.Max(UpperSlider.Value, LowerSlider.Value)

    End Sub

    Private Sub UpperSlider_ValueChanged(sender As System.Object, e As System.Windows.RoutedPropertyChangedEventArgs(Of System.Double)) Handles UpperSlider.ValueChanged
        LowerSlider.Value = Math.Min(UpperSlider.Value, LowerSlider.Value)

    End Sub

    Public Event PropertyChanged(sender As Object, e As System.ComponentModel.PropertyChangedEventArgs) Implements System.ComponentModel.INotifyPropertyChanged.PropertyChanged

    Private Sub Propertychange(ByVal Name As String)
        RaiseEvent PropertyChanged(Me, New System.ComponentModel.PropertyChangedEventArgs(Name))
    End Sub
End Class

Thema: Wpf - Textbox Binding 2 Variablen?
Am im Forum: GUI: WPF und XAML

Ich komm nicht mal in meinen Converter, warum nur nicht? :/


<local:RangeSlider x:Name="mySlider" VerticalAlignment="Center" Minimum="0" Maximum="86399" LowerValue="{Binding Von, Converter={StaticResource IntegerToHourConverter}}"/>

Thema: Wpf - Textbox Binding 2 Variablen?
Am im Forum: GUI: WPF und XAML

Hallo Lars Schmitt,

versuch ich auch schon die ganze zeit leider funktioniert das irgendwie nicht, ich muss dazu sagen mein Slider ist ein eigenes UserControl muss man beim Binden an Dependency Properties irgendwas beachten?

Grüße

Thema: Wpf - Textbox Binding 2 Variablen?
Am im Forum: GUI: WPF und XAML

Hallo Liebe Community,

ich brauche wieder mal eure Hilfe!

Ich hab folgendes Problem : Ich muss auf eine Textbox einen Wert Binden.

Nur muss gleichzeitig die Textbox TwoWay auf einen Slider gebunden sein.

So dass die Textbox wenn vorhanden einen Startwert bekommt (aus der Datenbank) und dieser automatisch auf den Slider gebunden wird. Sich aber auch ändert wenn er auf dem Slider geändert wird.

Hab aktuell schon paar Sachen ausprobiert aber komme nicht zu einem Erfolg, ich google jetzt weiter eventuell hat ja jemand von euch Erfahrung damit. Geht das überhaupt?

Grüße

Thema: Slider als TimeLine?
Am im Forum: GUI: WPF und XAML

Nein es sollen solche Teilstriche selber gezeichnet werden zu einem vorgegebenen Intervall was sich nur zwischen Von und Bis befindet :/

Thema: Slider als TimeLine?
Am im Forum: GUI: WPF und XAML

Hat jemand eine Idee wie ich vom Thumb des Sliders die exakte Position bekomme?

Thema: Slider als TimeLine?
Am im Forum: GUI: WPF und XAML

Hallo MrSparkle,


also folgendes : Ich habe mir dieses Steuerelement gebaut den RangeSlider jetzt soll folgende funktionalität hinzukommen.

Wenn eine Zeitspanne gegeben ist (Von - Bis) und dazu ein Intervall wie oft dieser Dienst (Von - Bis) in diesem Zeitraum ausgeführt werden soll, soll ermittelt werden wie oft dieses Intervall in diese Zeitspanne hinein passt, um dann auf der TimeLine zwischen den Abständen (Von - Bis) das Intervall exakt auf der TimeLine zu platzieren

Beispiel : 5 Uhr - 6 Uhr (Intervall 5 Minuten) 5:05 Strich, 5:10 Strich, 5:15 Streich usw.

Thema: Slider als TimeLine?
Am im Forum: GUI: WPF und XAML

Hallo Liebe Community,

ich hab es jetzt geschafft einen funktionierenden RangeSlider auf die Beine zu stellen.

Meine Frage an dieser Stelle wie kann ich am besten das umsetzen was im Bild zu sehen ist.

Man kann Von und Bis einstellen sowie ein Intervall wie oft das ganze in diesem Zeitraum erfüllt werden soll.

Und dann soll dieses Intervall in dem Bereich Von und Bis dargestellt werden.

D.h. es soll automatisch z.B. solche Striche wie im Bild erstellt werden anhand der Zeitspanne die zwischen Von und Bis gegeben ist.

Diese Striche müssen gleichzeitig auch noch an die echten Uhrzeiten platziert werden die auf dem RangeSlider gegeben ist.

Hat jemand eine Idee? Mir fällt da leider garnichts zu ein :/

Grüße

Thema: Slider als TimeLine?
Am im Forum: GUI: WPF und XAML

Hab das Beispiel aus dem Link mal für VB.net umgesetzt.

Falls jemand nochmal darüber stolpert. > ERLEDIGT <

<UserControl x:Class="RangeSlider"
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
             xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
             mc:Ignorable="d" 
             d:DesignHeight="20" d:DesignWidth="300"     
             x:Name="root">

    <UserControl.Resources>

        <LinearGradientBrush x:Key="SliderThumbGradient" StartPoint="0,0" EndPoint="0,1">
            <GradientStop Offset="0" Color="#f7f7f7"/>
            <GradientStop Offset="1" Color="#bcbcbc"/>
        </LinearGradientBrush>

        <Style x:Key="SliderThumbStyle" TargetType="{x:Type Thumb}">
            <Setter Property="SnapsToDevicePixels" Value="true"/>
            <Setter Property="OverridesDefaultStyle" Value="true"/>
            <Setter Property="Height" Value="14"/>
            <Setter Property="Width" Value="14"/>
            <Setter Property="Template">
                <Setter.Value>
                    <ControlTemplate TargetType="{x:Type Thumb}">
                        <Ellipse 
      Name="Ellipse" 
      Fill="{DynamicResource SliderThumbGradient}"
      Stroke="#404040"
      StrokeThickness="1" />
                        <ControlTemplate.Triggers>
                            <Trigger Property="IsMouseOver" Value="True">
                                <Setter TargetName="Ellipse" Property="Fill" Value="#808080"/>
                            </Trigger>
                            <Trigger Property="IsEnabled" Value="false">
                                <Setter TargetName="Ellipse" Property="Fill" Value="#EEEEEE"/>
                            </Trigger>
                        </ControlTemplate.Triggers>
                    </ControlTemplate>
                </Setter.Value>
            </Setter>
        </Style>

        <ControlTemplate x:Key="simpleSlider" TargetType="{x:Type Slider}">
            <Border SnapsToDevicePixels="true" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}">
                <Grid>
                    <Grid.RowDefinitions>
                        <RowDefinition Height="Auto"/>
                        <RowDefinition Height="Auto" MinHeight="{TemplateBinding MinHeight}"/>
                        <RowDefinition Height="Auto"/>
                    </Grid.RowDefinitions>

                    <Rectangle x:Name="PART_SelectionRange"/>

                    <Track x:Name="PART_Track" Grid.Row="1">
                        <Track.Thumb>
                            <Thumb x:Name="Thumb" Style="{StaticResource SliderThumbStyle}"/>
                        </Track.Thumb>
                    </Track>
                </Grid>
            </Border>
        </ControlTemplate>

    </UserControl.Resources>
    <Grid VerticalAlignment="Top">
        
            <Border BorderThickness="0,1,0,0" BorderBrush="Black" VerticalAlignment="Center" Height="1" 
                Margin="5,0,5,0" Grid.ColumnSpan="25"/>
        
                <Slider x:Name="LowerSlider"
                Minimum="{Binding ElementName=root, Path=Minimum}"
                Maximum="{Binding ElementName=root, Path=Maximum}"
                Value="{Binding ElementName=root, Path=LowerValue, Mode=TwoWay}"
                Template="{StaticResource simpleSlider}"
                Margin="0,0,10,0" ToolTip="Von" VerticalAlignment="Center"
                />

        <Slider x:Name="UpperSlider"
                Minimum="{Binding ElementName=root, Path=Minimum}"
                Maximum="{Binding ElementName=root, Path=Maximum}"
                Value="{Binding ElementName=root, Path=UpperValue, Mode=TwoWay}"
                Template="{StaticResource simpleSlider}"
                Margin="10,0,0,0" ToolTip="Bis" VerticalAlignment="Center"
                />
    </Grid>
</UserControl>
Partial Public Class RangeSlider
    Inherits UserControl

    Public Sub New()

        ' Dieser Aufruf ist für den Designer erforderlich.
        InitializeComponent()

        ' Fügen Sie Initialisierungen nach dem InitializeComponent()-Aufruf hinzu.

    End Sub

    Public Shared ReadOnly MinimumProperty As DependencyProperty = DependencyProperty.Register("Minimum", GetType(Double), GetType(RangeSlider), New UIPropertyMetadata(0.0))
    Public Shared ReadOnly LowerValueProperty As DependencyProperty = DependencyProperty.Register("LowerValue", GetType(Double), GetType(RangeSlider), New UIPropertyMetadata(0.0))
    Public Shared ReadOnly UpperValueProperty As DependencyProperty = DependencyProperty.Register("UpperValue", GetType(Double), GetType(RangeSlider), New UIPropertyMetadata(0.0))
    Public Shared ReadOnly MaximumProperty As DependencyProperty = DependencyProperty.Register("Maximum", GetType(Double), GetType(RangeSlider), New UIPropertyMetadata(1.0))

    Public Property Minimum As Double
        Get
            Return CDbl(GetValue(MinimumProperty))
        End Get
        Set(value As Double)
            SetValue(MinimumProperty, value)
        End Set
    End Property
    Public Property LowerValue As Double
        Get
            Return CDbl(GetValue(LowerValueProperty))
        End Get
        Set(value As Double)
            SetValue(LowerValueProperty, value)
        End Set
    End Property
    Public Property UpperValue As Double
        Get
            Return CDbl(GetValue(UpperValueProperty))
        End Get
        Set(value As Double)
            SetValue(UpperValueProperty, value)
        End Set
    End Property
    Public Property Maximum As Double
        Get
            Return CDbl(GetValue(MaximumProperty))
        End Get
        Set(value As Double)
            SetValue(MaximumProperty, value)
        End Set
    End Property

    Private Sub LowerSlider_ValueChanged(sender As System.Object, e As System.Windows.RoutedPropertyChangedEventArgs(Of System.Double)) Handles LowerSlider.ValueChanged
        UpperSlider.Value = Math.Max(UpperSlider.Value, LowerSlider.Value)
    End Sub

    Private Sub UpperSlider_ValueChanged(sender As System.Object, e As System.Windows.RoutedPropertyChangedEventArgs(Of System.Double)) Handles UpperSlider.ValueChanged
        LowerSlider.Value = Math.Min(UpperSlider.Value, LowerSlider.Value)
    End Sub
End Class

Thema: Slider als TimeLine?
Am im Forum: GUI: WPF und XAML

Kann mir vllt jemand auf die Sprünge helfen? Ich bekomme durch das Beispiel leider den RangeSlider nicht erstellt bzw. bei meinem Versuch kann die Instanz nicht erstellt werden.

Hab versucht das Beispiel in VB.NET umzuschreiben.

Grüße

Thema: Slider als TimeLine?
Am im Forum: GUI: WPF und XAML

Jap, auf der Seite war ich sogar schon, konnte leider nur nicht ganz so viel mit anfangen, deswegen hab ich nach Rat im Forum gesucht :/

Thema: Slider als TimeLine?
Am im Forum: GUI: WPF und XAML

Hallo Liebe Community und ein gesundes neues Jahr von meiner Seite,

gibt es einen relativ einfach Ansatz einen Slider so umzubauen das ich mir eine TimeLine daraus basteln kann? Bzw. hat das mal jemand versucht und Erfahrung sammeln können?

Ich möchte quasi einen Zeitraum von 00:00 bis 24:00 Uhr und dort mit dem Slider Von und Bis einstellen.

Grüße

Thema: [erledigt] DataGrid - Zeilenfarbe zur Spalte [zur Laufzeit ändern] - XAML
Am im Forum: GUI: WPF und XAML

Ja sorry,

hab gestern irgendwie nichts mehr gesehen, zu viel XAML am Tag tut auch nicht gut, die Frage war vllt ein wenig unnötig, aber eventuell stolpert ja mal wer drüber.

                        <DataGridTextColumn.CellStyle>
                            <Style TargetType="{x:Type DataGridCell}">
                                <Style.Triggers>
                                    <DataTrigger Binding="{Binding Zustand}" Value="4">
                                        <Setter Property="Background" Value="{StaticResource WatchDogModulmanagerWindowPage_Running}"/>
                                        <Setter Property="BorderThickness" Value="0"/>
                                    </DataTrigger>
                                    <DataTrigger Binding="{Binding Zustand}" Value="1">
                                        <Setter Property="Background" Value="{StaticResource WatchDogModulmanagerWindowPage_Stopped}"/>
                                        <Setter Property="BorderThickness" Value="0"/>
                                    </DataTrigger>
                                    <DataTrigger Binding="{Binding Zustand}" Value="0">
                                        <Setter Property="Background" Value="{StaticResource WatchDogModulmanagerWindowPage_Uninstalled}"/>
                                        <Setter Property="BorderThickness" Value="0"/>
                                    </DataTrigger>
                                </Style.Triggers>
                            </Style>
                        </DataGridTextColumn.CellStyle>

Hatte es dann auch selber gefunden, aber mit Parso seinem Tipp wäre es auch noch schneller gegangen danke dir :)

Thema: [erledigt] DataGrid - Zeilenfarbe zur Spalte [zur Laufzeit ändern] - XAML
Am im Forum: GUI: WPF und XAML

Das hat aber bisher nicht geklappt, ich brauch kein bool ich kann via DataTrigger auf meinen Zustand zugreifen und wenn das Value dem Wert Beispielsweise Running entspricht kann ich die Farbe ändern, nur wie bereits gesagt ändert er die gesamte Zeile ich möchte aber nur die einzelne Row vom Zustand mit einer neuen Farbe versehen.

Gruß

Thema: [erledigt] DataGrid - Zeilenfarbe zur Spalte [zur Laufzeit ändern] - XAML
Am im Forum: GUI: WPF und XAML

Hey ho,

ist es möglich zur Laufzeit über DataTriggers die Farbe einer einzelnen Zeile zu verändern, obwohl RowBackground und AlternateRowBackground bereits vergeben sind?

Also geht es via XAML und den DataTriggers oder muss ich dort schon im Code durchgreifen?
Ich versuche die ganze Zeit eine Lösung zu finden der beste Erfolg war bisher vom DataGridTextColumn der Hintergrund des TextBlockes zu ändern (Funktioniert) sieht aber Mist aus.

Jemand eine Idee? Ich google solange weiter :/

Es soll quasi im Beispiel von dem Bild alles Rot bleiben außer die einzelnen Einträge vom Zustand die können in 7 Farben oder so variieren.

Thema: [erledigt] DataGrid Background der Zellen verschiebt sich - Warum?!
Am im Forum: GUI: WPF und XAML

Okay, scheint als ob es an meinem Label lag.

<Label Grid.Column="0" Content="{Binding Name}" VerticalAlignment="Center" Foreground="White"/>

Keine Ahnung warum, vllt ist das von "Natur" aus zu groß und hat daher Auswirkungen auf die Elemente im Expander?

Keine Ahnung, auf jedenfall kann das hiermit geschlossen werden.

Grüße

Thema: [erledigt] DataGrid Background der Zellen verschiebt sich - Warum?!
Am im Forum: GUI: WPF und XAML

Hey Parso,

   <LinearGradientBrush x:Key="WatchDogStatusPage_DataGrid_AlternatingCell_Background" StartPoint="0,1" EndPoint="0,0">
        <GradientStop Color="#D8D8D8" Offset="0.0"/>
        <GradientStop Color="#424242" Offset="1.0"/>
    </LinearGradientBrush>

Das ist doch nur der Farbverlauf, erklärt ja nicht warum sich die Abstände von den Farben verschieben. Noch eine Idee? :/

Grüße

Edit : Hier mal mit Standard Farben macht keinen Unterschied

Thema: [erledigt] DataGrid Background der Zellen verschiebt sich - Warum?!
Am im Forum: GUI: WPF und XAML

Moinsen Liebe Community,

ich hab hier gerade das Problem das wenn ich meine Zeilen in einem DataGrid gruppiere, das ganze mir meinen Background der einzelnen Zeilen verschiebt.

Jemand eine Idee woran das liegen könnte?

Hier mal ein Bildchen.

Grüße


<Grid.Resources>       
            <LinearGradientBrush x:Key="ExpanderBackground" StartPoint="0,0" EndPoint="1,0">
                <GradientStop Color="#000000" Offset="0.0"/>
                <GradientStop Color="#FFFFFF" Offset="1.0"/>
            </LinearGradientBrush>

            <LinearGradientBrush x:Key="BorderBrush" StartPoint="1,0" EndPoint="0,0">
                <GradientStop Color="#000000" Offset="0.0"/>
                <GradientStop Color="#FFFFFF" Offset="1.0"/>
            </LinearGradientBrush>
            
                <Style x:Key="GroupHeaderStyle" TargetType="{x:Type GroupItem}">
                <Setter Property="Template">
                    <Setter.Value>
                        <ControlTemplate TargetType="{x:Type GroupItem}">
                            <Border Background="{StaticResource BorderBrush}" Margin="0,-1,0,-2" BorderThickness="1">
                                <Expander x:Name="exp" IsExpanded="True" Background="{StaticResource ExpanderBackground}" Foreground="Black" Margin="0,0,0,0">
                                <Expander.Header>
                                    <StackPanel Orientation="Horizontal">
                                        <Grid>
                                            <Grid.ColumnDefinitions>
                                                <ColumnDefinition Width="200"/>
                                                <ColumnDefinition Width="*"/>
                                            </Grid.ColumnDefinitions>
                                            <Label Grid.Column="0" Content="{Binding Name}" VerticalAlignment="Center" Foreground="White"/>
                                            <TextBlock Grid.Column="1" Text="{Binding Path=ItemCount, StringFormat=Anzahl von Einträgen : {0}}" Foreground="White" VerticalAlignment="Center"/>
                                        </Grid>
                                    </StackPanel>
                                </Expander.Header>
                                <ItemsPresenter/>
                                </Expander>
                            </Border>
                        </ControlTemplate>
                    </Setter.Value>
                </Setter>
            </Style>
        </Grid.Resources>
        <DataGrid Grid.Row="1" x:Name="Module_Übersicht" ItemsSource="{Binding}" AutoGenerateColumns="False" ColumnHeaderStyle="{StaticResource WatchDogStatusPage_DataGrid_Header}" RowHeight="20" CellStyle="{StaticResource WatchDogStatusPage_Center_Cell}" RowBackground="{StaticResource WatchDogStatusPage_DataGrid_Cell_Background}" AlternatingRowBackground="{StaticResource WatchDogStatusPage_DataGrid_AlternatingCell_Background}" CanUserResizeRows="False" BorderBrush="Black" ScrollViewer.VerticalScrollBarVisibility="Hidden" RowHeaderWidth="0" RowStyle="{StaticResource WatchDogStatusRowStyle}">
            <DataGrid.Columns>
                <DataGridTextColumn Binding="{Binding Name}"  Header="Name" MinWidth="170" Width="*" IsReadOnly="True"/>
                <DataGridTextColumn Binding="{Binding Intervall}"  Header="Intervall" MinWidth="80" Width="*" IsReadOnly="True"/>
                <DataGridTextColumn Binding="{Binding Von}"  Header="Von" MinWidth="80" Width="*" IsReadOnly="True"/>
                <DataGridTextColumn Binding="{Binding Bis}"  Header="Bis" MinWidth="80" Width="*" IsReadOnly="True"/>
                <DataGridTextColumn Binding="{Binding Wochentage}"  Header="Wochentage" MinWidth="120" Width="*" IsReadOnly="True"/>
                <DataGridTextColumn Binding="{Binding Status}" Header="Status" MinWidth="120" Width="*" IsReadOnly="True"/>
                <DataGridTextColumn Binding="{Binding Letzte Ausführung Beginn, StringFormat={}{0:dd.MM.yyyy HH:mm:ss}}"  Header="Cycle_Von" MinWidth="140" Width="*" IsReadOnly="True"/>
                <DataGridTextColumn Binding="{Binding Letzte Ausführung Ende, StringFormat={}{0:dd.MM.yyyy HH:mm:ss}}"  Header="Cycle_Bis" MinWidth="140" Width="*" IsReadOnly="True"/>
            </DataGrid.Columns>
            <DataGrid.GroupStyle>
                <GroupStyle ContainerStyle="{StaticResource GroupHeaderStyle}">
                    <GroupStyle.Panel>
                        <ItemsPanelTemplate>
                            <DataGridRowsPresenter/>
                        </ItemsPanelTemplate>
                    </GroupStyle.Panel>
                </GroupStyle>
            </DataGrid.GroupStyle>
        </DataGrid>

Thema: Cursor Position - Innerhalb des Fenster's verändern
Am im Forum: GUI: WPF und XAML

Aufgeben wäre zu einfach :/

Also aktuell hab ich es hinbekommen hier mal der Code :

Class MainWindow 

    Private WithEvents CurrentItem As ListBoxItem

    Private _TextBox As TextBox

    Private Function HeightOfItems() As Integer

        Dim _Height As Integer = 0

        Dim iCount As Integer = 0

        Do While iCount ≤ ListBox_Main.Items.Count - 1

            Dim Item = CType(ListBox_Main.ItemContainerGenerator.ContainerFromItem(ListBox_Main.Items.Item(iCount)), ListBoxItem)

            ' --- Das letzte Item / Neu hinzugefügt --- '
            If iCount = ListBox_Main.Items.Count - 1 Then
                _Height += Item.ActualHeight / 2
            Else
                _Height += Item.ActualHeight
            End If

            iCount = iCount + 1
        Loop

        Return _Height
    End Function

    Private Declare Function SetCursorPos Lib "user32" (ByVal X As Integer, ByVal Y As Integer) As Boolean

    Private Sub Button1_Click(sender As System.Object, e As System.Windows.RoutedEventArgs) Handles Button1.Click

        _TextBox = New TextBox
        _TextBox.Width = 200

        Dim _Object As Object = _TextBox

        ListBox_Main.Items.Add(_Object)

        ListBox_Main.SelectedIndex = ListBox_Main.Items.Count - 1

        ListBox_Main.Focus()

        MsgBox(ListBox_Main.SelectedIndex)

        Dim _Width As Integer = ListBox_Main.ActualWidth / 2

        Dim _ListBox_StartPoint As Point = ListBox_Main.PointToScreen(New Point(0, 0))

        SetCursorPos(_ListBox_StartPoint.X + _Width, _ListBox_StartPoint.Y + HeightOfItems())

        Dim _CurrentItem = CType(ListBox_Main.ItemContainerGenerator.ContainerFromItem(ListBox_Main.Items.Item(ListBox_Main.Items.Count - 1)), ListBoxItem)

        CurrentItem = _CurrentItem

    End Sub

    Private Sub CurrentItem_MouseLeave(sender As Object, e As System.Windows.Input.MouseEventArgs) Handles CurrentItem.MouseLeave
        ' --- TextBox auf Inhalt prüfen --- '
        If _TextBox.Text = "" Then
            ListBox_Main.Items.RemoveAt(ListBox_Main.Items.Count - 1)
        End If
    End Sub
End Class

Einige Fälle sind natürlich noch nicht berücksichtigt, an sich ist die ListBox nur dafür da glaube ich eine IP - Adresse einzutragen bzw irgendein Text einzutragen, da kann nicht soviel manipuliert werden.

Findest du der Wert ist geraten? Ich nehme die exakte Position wo die ListBox beginnt, von dort aus hol ich mir beim Hinzufügen eines Eintrages die aktuelle Breite der ListBox.

Nehme davon die Hälfte, Platziere dort den Cursor.

Und die Höhe hol ich mir ja immer die aktuelle des Items. Alles ohne Raten :D

Sollte doch klappen?

Grüße

Thema: Cursor Position - Innerhalb des Fenster's verändern
Am im Forum: GUI: WPF und XAML

Moinsen,

ich bin jetzt soweit das ich den Cursor auf das zuletzt hinzugefügt Item setzen kann.


Private Function HöheDerItems() As Integer

Dim Höhe As Integer = 0
Dim iCount As Integer = 0

Do While iCount ≤ ListBox_Test.Items.Count - 1

Dim Item = CType(ListBox_Test.ItemContainerGenerator.ContainerFromItem(ListBox_Test.Items.Item(iCount)), ListBoxItem)

            If iCount = ListBox_Test.Items.Count - 1 Then
                Höhe += Item.ActualHeight / 2
            Else
                Höhe += Item.ActualHeight
            End If

            iCount = iCount + 1
        Loop

        Return Höhe

    End Function

ListBox_Test.Items.Add("AA")

        ListBox_Test.SelectedIndex = ListBox_Test.Items.Count - 1
        ListBox_Test.Focus()
Dim c As Point = ListBox_Test.PointToScreen(New Point(0, 0))


Dim Breite As Integer = ListBox_Test.ActualWidth / 2



        Dim Höhe As Integer = 10

        MsgBox(Breite.ToString)

        c.X = c.X + Breite

        c.Y = c.Y + HöheDerItems()

        SetCursorPos(c.X, c.Y)


Brauch eigentlich nur noch ein Event für das ListBoxItem, tu mich da gerade noch schwer/dumm.

Thema: Cursor Position - Innerhalb des Fenster's verändern
Am im Forum: GUI: WPF und XAML

Also von der Idee eher verabschieden :O

Erstmal danke für die ganze Hilfe :)

Thema: Cursor Position - Innerhalb des Fenster's verändern
Am im Forum: GUI: WPF und XAML

Naja das Ziel soll sein beim Hinzufügen eines ListBoxItems den Cursor auf das aktuell hinzugefügte Item zu setzen, da führt kein Weg dran vorbei. So ist die Vorgabe :|

Thema: Cursor Position - Innerhalb des Fenster's verändern
Am im Forum: GUI: WPF und XAML

Ja, gut stimmt reicht aus.

Aber wie krieg ich das jetzt zu einem Item der ListBox nach dem gleichen Prinzip?

Edit : Bzw geht das überhaupt?

Gruß

Thema: Cursor Position - Innerhalb des Fenster's verändern
Am im Forum: GUI: WPF und XAML

Dim ListBoxP As Point = ListBoxMain.PointToScreen(New Point(0, 0))

        Dim MainWindowP As Point = Application.Current.MainWindow.PointToScreen(New Point(0, 0))

        Dim MainPoint As Point = New Point(ListBoxP.X + MainWindowP.X, ListBoxP.Y + MainWindowP.Y)

        MessageBox.Show("FirstP X : " & ListBoxP.X & " " & "FirstP Y : " & ListBoxP.Y & " " & "SecondP X : " & MainWindowP.X & " " & "Second P: " & MainWindowP.Y)

        MsgBox(MainPoint.X & " " & MainPoint.Y)

        SetCursorPos(MainPoint.X, MainPoint.Y)

Hat nicht das gewünsche Ergebnis gebracht.

Gruß

Edit : Bei dem Roten Kreis war ca mein Cursor

Thema: Cursor Position - Innerhalb des Fenster's verändern
Am im Forum: GUI: WPF und XAML

1.) Ich weiß hab ich schon gemacht : Private Declare Function SetCursorPos Lib "user32" (ByVal X As Integer, ByVal Y As Integer) As Boolean

Hätte ich vllt dazu sagen sollen, sorry schreib selten Foren Beiträge :|

Ich teste das ganze mal fix, danke.

Thema: Cursor Position - Innerhalb des Fenster's verändern
Am im Forum: GUI: WPF und XAML

Naja darauf wurde halt verwiesen, in diversen Foren Einträgen.

Ich versuch das mal nochmal ordentlich zu erklären, ich möchte in WPF :

In meinem Fenster den Cursor verschieben, der Sinn dahinter ich möchte mir via Button
ein neues ListBoxItem erstellen und auf dieses Item meinen Cursor legen.

PointFromScreen -
Konvertiert einen in Bildschirmkoordinaten angegebenen Point in einen Point, der das aktuelle Koordinatensystem des Visual darstellt.

ScreenToPoint -
Rechnet die Position des angegebenen Clientpunkts in Bildschirmkoordinaten um

Helfen mir dabei eigentlich nicht wirklich, weil sich selbst dann der Cursor nur innerhalb des Bildschirm verschiebt, nicht innerhalb des Fensters

Grüße

Thema: Cursor Position - Innerhalb des Fenster's verändern
Am im Forum: GUI: WPF und XAML

Hallo,

also PointToScreen kenn ich ScreenToPoint nicht, nur PointFromScreen.

Mit beiden konnte ich bisher nicht das gewünschte Ergebnis erreichen, vllt hab ich was falsch gemacht.

Aktuell versuch ich mit


With Application.Current.MainWindow
MessageBox.Show(.Left & " " .Top)
End With

Die aktuelle Position des Fenster's zu bekommen, jedoch wirft das nicht immer optimale Ergebnisse.

Gruß

Thema: Cursor Position - Innerhalb des Fenster's verändern
Am im Forum: GUI: WPF und XAML

Hallo Liebe Community,

ich möchte meinen Cursor, meine Mouse Position innerhalb des Fensters ändern.

Bis hab ich herausgefunden an welcher Position sich einige Controls befinden. Nur wenn ich dann mit gewissen Standard Sachen versuche die Cursor Position zu ändern bspw.

System.Windows.Forms.Cursor.Position = meineNeuePosition

Ändert er es auf dem gesamten Bildschirm, ich möchte mich gerne nur innerhalb des Fenster bewegen. Wenn ich versuche die Position des Fenster's zu ermitteln, um das ganze dann zu addieren, bekomme ich die Werte 0,0.

Bringt mir nichts. Hat jemand eine Idee, wie ich das ganze umsetzen kann.

Grüße

Thema: WPF VB.NET - Multithreading - Fill Listbox
Am im Forum: GUI: WPF und XAML

Hallo Coffeebean,

ich hab mich bisher ein wenig im Buch belesen, außerdem schon eine weile gegoogled.

Ich möchte halt aus einer bestehenden Liste die sogar als Itemsource schon angebunden ist, jedes Item nach einigen Sekunden in die ListBox laden, aus dem Grund das beim erstellen dieser Liste, jedes Item unterschiedliche Zeit brauch und dadurch die gesamte Anwendung hängt.

 Private Sub Button1_Click(sender As System.Object, e As System.Windows.RoutedEventArgs) Handles Button1.Click
        Nas_Durchlauf.PingResult()
        'ListB_Nas.Items.Refresh()
        'Geräte_Durchlauf.PingResult()

        '' ListB_Geräte.DataContext = Geräte_Durchlauf.PingResults
        'Server_Durchlauf.PingResult()
        'Drucker_Durchlauf.PrinterResult()

        'Me.UpdateLayout()
        Dim testThread As New System.Threading.Thread(AddressOf Test2)

        testThread.Start()
  End Sub

    Private Sub Test1()
        Try
            System.Threading.Thread.Sleep(1000)
            Dim Test As New Properties

            Test.Name = "TEST"
            Test.Zugriff = 1

            Nas_Durchlauf.PingResults.Add(Test)

            ListB_Nas.Items.Refresh()

            System.Threading.Thread.Sleep(10000)

            Dim Bla As New Properties

            Bla.Name = "TEST2"
            Bla.Zugriff = 0

            Nas_Durchlauf.PingResults.Add(Bla)

            ListB_Nas.Items.Refresh()
        Catch ex As Exception
            MessageBox.Show(ex.ToString)
        End Try

    End Sub

    Private Delegate Sub DelegateTest()

   Private Sub Test2()

        System.Threading.Thread.Sleep(1000)

        Dim test123 As New DelegateTest(AddressOf Test1)

        Me.Dispatcher.Invoke(test123)
   End Sub

Aber schon in diesem kleinen Versuch funktioniert es nicht, er fügt immer alles als gesamten Block hinzu. Nicht das eine Item nach 1 Sekunde und das andere nach 10 sondern alles nach 11.

Thema: WPF VB.NET - Multithreading - Fill Listbox
Am im Forum: GUI: WPF und XAML

Hallo Liebe Community,

ich möchte meine Listbox(en) via Multithreading befüllen lassen, das die Items alle paar Sekunden nacheinander hinzugefügt werden.

Hat jemand einen Denkanstoß oder ein Beispiel? Ich komm bisher nicht voran.

Grüße