Hallo,
ich habe folgenden Code:
<Grid>
<ScrollViewer x:Name="tagsGridScrollViewer" HorizontalScrollBarVisibility="Auto" PreviewMouseWheel="ScrollViewer_PreviewMouseWheel">
<DataGrid x:Name="tagsGrid" ItemsSource="{Binding}" ScrollViewer.PanningMode="None"
AlternatingRowBackground="LightBlue" AutoGenerateColumns="False" CanUserAddRows="True" IsReadOnly="False"
SelectionMode="Single" BorderThickness="3" SelectionChanged="DataGrid_SelectionChanged" RowStyle="{StaticResource errorRowStyle}">
<DataGrid.Columns>
<DataGridTextColumn x:Name="TagName" Header="Tag name" Binding="{Binding Mode=TwoWay, Path=RawTag.TagName, UpdateSourceTrigger=PropertyChanged}" />
<DataGridTextColumn x:Name="TagCycle" Header="Cycle" >
<DataGridTextColumn.Binding>
<Binding Path="RawTag.Cycle" NotifyOnValidationError="True" Mode="TwoWay">
<Binding.ValidationRules>
<local:CycleValidationRule></local:CycleValidationRule>
</Binding.ValidationRules>
</Binding>
</DataGridTextColumn.Binding>
</DataGridTextColumn>
<DataGridTextColumn x:Name="TagSource" Header="Source" Binding="{Binding Mode=TwoWay, Path=RawTag.Source}"></DataGridTextColumn>
<DataGridTemplateColumn x:Name="editTagColumn" Header="">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<WrapPanel>
<Button x:Name="btnTagDelete" Click="BtnTagDelete_Click" CommandParameter="{Binding}" Height="15" Width="15" Margin="2">
<Button.Content>
<Image Source="../Resources/delete.png"></Image>
</Button.Content>
</Button>
</WrapPanel>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
</DataGrid.Columns>
</DataGrid>
</ScrollViewer>
</Grid>
Ich bekomme alle Spalten als hätte ich Width="auto" gesetzt und eine 5. leere Spalte.
Das Problem an welchem ich mir die Zähne ausbeiße, ich will, dass die Summe der Spalten volle Breite ergibt indem ich die 1. und die 3. Spalte auf "nimm Dir was Du bekommen kannst" also auf Width="*" setzen.
Setze ich das aber, dann sind die 1. und 3. Spalte nicht maximal breit sondern so breit wie die letzte mit dem Button. Eine feste Breite Width="200" o.ä. klappt.
Was verstehe ich an * falsch?
Vielen Dank im Voraus.
Gruß
Dirk
Hi.
Ich versuche mich direkt mal zu beteiligen.
Macht es denn Sinn in einem GridLayout 2 mal * zu vergeben? Woher soll das Ding denn dann wissen wie groß die 1. Spalte mit * und wie groß die 2. Spalte mit * werden soll.
Ich hab in jedem Layout immer nur 1 * für eine Row und 1 * für eine Column.
Grüße
Daimonion
Macht es denn Sinn in einem GridLayout 2 mal * zu vergeben? Woher soll das Ding denn dann wissen wie groß die 1. Spalte mit * und wie groß die 2. Spalte mit * werden soll. Na dann halbieren sich beide den vorhandenen Platz.
@dila71: wie ist denn die 5. spalte in der Breite definiert bzw. was soll rauskommen? Sollen sich alle drei den Platz teilen?
Als Erstes, Sorry, dass ich mich jetzt erst melde, kam gestern irgendwie nicht online.
@witte
Es gibt ja eigentlich keine 5. Spalte, nur wird eben der leere Platz hinten nach der Buttonspalte als solche dargestellt. DIE SOLL WEG.
@Daimonion1980: genau wie witte es geschrieben hat, habe ich es verstanden und will es.
die 2. Spalte DataGridTextColumn x:Name="TagCycle" soll auf Auto nehmen soviel sie braucht, ebenso soll die letzte also 4. Spalte DataGridTemplateColumn x:Name="editTagColumn" nehmen was sie braucht, die 1. und 3. Spalte sollen sich den kompletten restlichen Platz einvernehmen und 1/2 zu 1/2 teilen, so dass es keine 5. Spalte mehr gibt.
Gruß
Dirk
Das Problem ist dass du ein ScrollViewer um das DataGrid gebaut hast und das Grid sich nun unendlich viel Platz für die *-Spalten nehmen darf.