C# WPF, Grid Margin wird irgendwie automatisch zurückgesetzt

roker002

Commander
Registriert
Dez. 2007
Beiträge
2.061
Hallo Leute,

ich habe eine Anwendung die in eine ListView die Einträge der einzele Tage anzeigen soll. es funktioniert soweit gut, leider wird Margin des inneren Grids zurückgesetzt:
Vorher|Nachher
Vorher.jpgNachher.jpg

Wenn ich aus GridViewColumn die Bindings entferne, bekomme ich diesen lustigen Vorfall nicht zu sehen....
Hat vielleicht jemand eine Idee, woran es liegen kann? Kann man Irgendwie den Margin Change Tracen?

Code:
<Style x:Key="GridHeaderCenterLE" TargetType="{x:Type GridViewColumnHeader}">
            <Setter Property="FontSize" Value="16" />
            <Setter Property="FontWeight" Value="Bold" />
        </Style>
        <Style x:Key="GridHeaderCenterDefault" TargetType="{x:Type GridViewColumnHeader}">
            <Setter Property="FontSize" Value="16" />
        </Style>
        <Style x:Key="GridHeaderCenterDay" TargetType="{x:Type GridViewColumnHeader}">
            <Setter Property="FontSize" Value="14" />
        </Style>

        <DataTemplate x:Key="DefaultColum" DataType="{x:Type GridViewColumnHeader}">
            <TextBlock Text="{Binding}" Padding="5" />
        </DataTemplate>

        <DataTemplate x:Key="myHeaderTemplate" DataType="{x:Type GridViewColumnHeader}">
            <StackPanel MinWidth="30" DataContext="{TemplateBinding Content}">
                <TextBlock Text="{Binding Day}" Padding="2" Width="{TemplateBinding Width}" TextAlignment="Center" VerticalAlignment="Center" />
                <TextBlock Text="{Binding Name}" Padding="2" Width="{TemplateBinding Width}" TextAlignment="Center" VerticalAlignment="Center" />
            </StackPanel>
        </DataTemplate>


    </UserControl.Resources>
    <Grid DataContext="{Binding ViewModel, ElementName=Main}">
        <Grid.RowDefinitions>
            <RowDefinition />
            <RowDefinition Height="26" />
        </Grid.RowDefinitions>
        <Grid Margin="10"> <!-- ----- HIER wird margin zurückgesetzt -->
            <Grid.RowDefinitions>
                <RowDefinition Height="auto" />
                <RowDefinition />
            </Grid.RowDefinitions>
            <Grid.ColumnDefinitions>
                <ColumnDefinition MinWidth="300" MaxWidth="300"/>
                <ColumnDefinition MinWidth="300" MaxWidth="300"/>
                <ColumnDefinition MinWidth="400" MaxWidth="400"/>
                <ColumnDefinition/>
            </Grid.ColumnDefinitions>
...
            <ListView Grid.Row="1" Grid.ColumnSpan="4" Margin="0,10" ItemsSource="{Binding Path=CurrentBill.Leistungen}">
                <ListView.Resources>
                    <Style TargetType="{x:Type ListViewItem}">
                        <Setter Property="HorizontalContentAlignment" Value="Stretch" />
                        <Setter Property="VerticalContentAlignment" Value="Stretch" />
                    </Style>
                </ListView.Resources>
                <ListView.View>
                    <GridView ColumnHeaderTemplate="{StaticResource myHeaderTemplate}"
                               ColumnHeaderContainerStyle="{StaticResource GridHeaderCenterDay}">
                        <GridViewColumn HeaderContainerStyle="{StaticResource GridHeaderCenterLE}" HeaderTemplate="{StaticResource DefaultColum}" Header="Leistungen">
                            <GridViewColumn.CellTemplate>
                                <DataTemplate>
                                    <DefaultUI:RemoveParentMargin>
                                        <Grid>
                                            <Grid.RowDefinitions>
                                                <RowDefinition Height="30" />
                                                <RowDefinition Height="30" />
                                            </Grid.RowDefinitions>
                                            <Border Grid.Row="0" BorderBrush="Black" BorderThickness="1,1,1,0" />
                                            <Border Grid.Row="1" BorderBrush="Black" BorderThickness="1" />
                                            <Button Content="PN Wählen" Margin="2" Background="{x:Null}" BorderBrush="{x:Null}" />
                                            <TextBlock Text="Einsatzzeit" HorizontalAlignment="Center" VerticalAlignment="Center" FontWeight="Bold" Grid.Row="2" />
                                        </Grid>
                                    </DefaultUI:RemoveParentMargin>
                                </DataTemplate>
                            </GridViewColumn.CellTemplate>
                        </GridViewColumn>
                        <GridViewColumn HeaderTemplate="{StaticResource DefaultColum}" HeaderContainerStyle="{StaticResource GridHeaderCenterDefault}" Header="Preis">
                            <GridViewColumn.CellTemplate>
                                <DataTemplate>
                                    <DefaultUI:RemoveParentMargin>
                                        <Grid>
                                            <Grid.RowDefinitions>
                                                <RowDefinition Height="30" />
                                                <RowDefinition Height="30" />
                                            </Grid.RowDefinitions>
                                            <Border Grid.Row="0" BorderBrush="Black" BorderThickness="0,1,1,0" />
                                            <Border Grid.Row="1" BorderBrush="Black" BorderThickness="0,1,1,1" />
                                            <TextBlock Text="{Binding Path=Current.FormattedPrice}" HorizontalAlignment="Center" VerticalAlignment="Center" />
                                            <Button Content="Löschen" Grid.Row="1" Margin="2" Background="{x:Null}" BorderBrush="{x:Null}" />
                                        </Grid>
                                    </DefaultUI:RemoveParentMargin>
                                </DataTemplate>
                            </GridViewColumn.CellTemplate>
                        </GridViewColumn>
                        <GridViewColumn HeaderTemplate="{StaticResource DefaultColum}" HeaderContainerStyle="{StaticResource GridHeaderCenterDefault}" Header="#">
                            <GridViewColumn.CellTemplate>
                                <DataTemplate>
                                    <DefaultUI:RemoveParentMargin>
                                        <Grid>
                                            <Grid.RowDefinitions>
                                                <RowDefinition Height="30" />
                                                <RowDefinition Height="30" />
                                            </Grid.RowDefinitions>
                                            <Border Grid.Row="0" BorderBrush="Black" BorderThickness="0,1,1,0" />
                                            <Border Grid.Row="1" BorderBrush="Black" BorderThickness="0,1,1,1" />
                                            <TextBlock Text="{Binding Path=TotalActive}" HorizontalAlignment="Center" VerticalAlignment="Center" />
                                            <TextBlock Text="{Binding Path=Index}" Grid.Row="1" HorizontalAlignment="Center" VerticalAlignment="Center" />
                                        </Grid>
                                    </DefaultUI:RemoveParentMargin>
                                </DataTemplate>
                            </GridViewColumn.CellTemplate>
                        </GridViewColumn>
                        <GridViewColumn Header="{Binding ElementName=Main, Path=ViewModel.DiM.Days[0]}"></GridViewColumn>
<!-- Hab hierfür keine bessere Lösung gefunden -->
                        <GridViewColumn Header="{Binding ElementName=Main, Path=ViewModel.DiM.Days[30]}"></GridViewColumn>
                    </GridView>
                </ListView.View>
            </ListView>
        </Grid>
        <StatusBar Grid.Row="1"/>
 
Leider kann ich das bei mir nicht nachstellen aber
"<DefaultUI:RemoveParentMargin>" sollte es eigentlich schon erklären.
 
Zurück
Oben