WPF TabellenControl gesucht

eXistenC

Mitglied
Hallo Leute,

für ein kleines y möchte ich mir einen DateTime Picker im passenden WPF Design basteln. Soweit,... So gut, ....

Nach einigen Versuchen entscheide ich mich für eine Listview, die mit einem Binding an die Property WeekDays gebunden wird, welche 7 String Felder hat.

Ist auch alles soweit OK.

Aber es gibt noch ein paar Problemchen die ich nicht lösen kann.

XAML-Code
Code:
<Window x:Class="wpfDateTimePickerTest.DateTimePickerWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="Wähle Datum und Uhrzeit" SizeToContent="WidthAndHeight" Loaded="DateTimePicker_load" ResizeMode="NoResize" WindowStyle="ToolWindow" WindowStartupLocation="CenterOwner" BorderBrush="Black" BorderThickness="1" >
    
    <Window.Resources>
        <Style TargetType="ListView">
            <Setter Property="Margin" Value="0,5"/>
        </Style>
        <Style TargetType="Label">
            <Setter Property="VerticalAlignment" Value="Center"/>
        </Style>
        <Style TargetType="TextBox">
            <Setter Property="VerticalAlignment" Value="Center"/>
        </Style>
        <Style TargetType="Button">
            <Setter Property="Width" Value="25"/>
            <Setter Property="Height" Value="25"/>
            <Setter Property="FontSize" Value="14"/>
            <Setter Property="FontWeight" Value="Bold"/>
            <Setter Property="HorizontalContentAlignment" Value="Center"/>
            <Setter Property="VerticalContentAlignment" Value="Center"/>
            <Setter Property="Cursor" Value="Hand"/>            
        </Style>
    </Window.Resources>
    <Grid Margin="15">
        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="Auto" />
            <ColumnDefinition Width="*" />            
            <ColumnDefinition Width="Auto" />
        </Grid.ColumnDefinitions>
        <Grid.RowDefinitions>
            <RowDefinition Height="Auto" />
            <RowDefinition Height="*" />
            <RowDefinition Height="Auto" />
        </Grid.RowDefinitions>
                
        <Button Name="butDecreaseMonth" Click="butDecreaseMonth_click" Grid.Row="0" Grid.Column="0">-</Button>
        <Label Name="lblMonthDisplay" Grid.Row="0" Grid.Column="1" HorizontalContentAlignment="Center">MonatsAngabe</Label>
        <Button Name="butIncreaseMonth" Click="butIncreaseMonth_click"  Grid.Row="0" Grid.Column="2">+</Button>
        
        <ListView Grid.Row="1" Grid.Column="0" Grid.ColumnSpan="3" Name="lvwMonthDays" IsEnabled="True" SelectionMode="Single">
            <ListView.View>
                <GridView>
                    <GridViewColumn Width="30" Header="MO" DisplayMemberBinding="{Binding MoField}"  />
                    <GridViewColumn Width="30" Header="DI" DisplayMemberBinding="{Binding TuField}" />
                    <GridViewColumn Width="30" Header="MI" DisplayMemberBinding="{Binding WeField}" />
                    <GridViewColumn Width="30" Header="DO" DisplayMemberBinding="{Binding ThField}" />
                    <GridViewColumn Width="30" Header="FR" DisplayMemberBinding="{Binding FrField}" />
                    <GridViewColumn Width="30" Header="SA" DisplayMemberBinding="{Binding SaField}" />
                    <GridViewColumn Width="30" Header="SO" DisplayMemberBinding="{Binding SoField}" />
                </GridView>
            </ListView.View>            
        </ListView>        
        <WrapPanel Grid.Row="2" Grid.Column="0" Grid.ColumnSpan="3" HorizontalAlignment="Center">            
            <TextBox>17</TextBox>
            <Label>:</Label>
            <TextBox>33</TextBox>
            <Label>:</Label>
            <TextBox>12</TextBox>
            <Button Name="butOk" Click="butOk_click" Width="50" Margin="15,3,0,3">OK</Button>
            <Button Name="butEsc" Click="butEsc_click" Width="50" Margin="4,3,0,3">ESC</Button>
        </WrapPanel>        
    </Grid>
</Window>

In der Anlage ein ScreenShot und das ganze testProjekt mal zum probieren.

Probleme:

In der Listview Kann man zwischen den Spaltenköpfen einen Separator schieben, so das die Spalte-Breite sich ändert. Wie kann ich das verhindert.

Die Spaltenköpfe der ListViews verändern die Farbe bei Mouse Over, wie verhinder ich das.

Die ListViewItems hängen an einer Property mit 7 Feldern für die Wochentage.
Aber man kann nur die ganze Zeile auswählen, ich möchte aber einzelne Properties auswählen können. Wie komm ich da hin?

Und natürlich am Ende noch die ausgewählte (markierte) Property auslesen. Auch das hab ich noch nicht rausgefunden.

Wpf ist noch mega neu für mich. AScheint mir wahnsinnig umständlich, aber megageil!... Hoff Ihr habt Lösungsansätze für mich. Beim Googeln hab ich nix finden können.

LG eXi
 

Anhänge

  • ScreenShot.jpg
    ScreenShot.jpg
    27,3 KB · Aufrufe: 52
  • wpfDateTimePickerTest.zip
    56,8 KB · Aufrufe: 24
Zuletzt bearbeitet:

Neue Beiträge

Zurück