Ich habe einfach Usercontrol mit zwei Spalten und in der ersten Spalte Ich habe DataGrid
:WPF Usercontrol-Komponente Grid Definition Ausgabe
<UserControl x:Class="Caliburn_SimpleInjector_Sample.ViewModel.ShellView"
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"
MinWidth="1100" MinHeight="400">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="*" />
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width=".20*" />
<ColumnDefinition Width="5" />
<ColumnDefinition Width=".70*" />
</Grid.ColumnDefinitions>
<DataGrid Grid.Row="0" Grid.Column="0" ItemsSource="{Binding Path=Tasks, Mode=OneWay}"
SelectedItem="{Binding SelectedTask}"
AutoGenerateColumns="False" IsReadOnly="True"
CanUserResizeRows="False" GridLinesVisibility="None"
SelectionUnit="FullRow"
RowHeaderWidth="0"
FontSize="14">
<DataGrid.CellStyle>
<Style TargetType="DataGridCell">
<Setter Property="BorderThickness" Value="0" />
<Setter Property="FocusVisualStyle" Value="{x:Null}" />
</Style>
</DataGrid.CellStyle>
<DataGrid.Columns>
<DataGridTextColumn Header="Col 1" Binding="{Binding Find}" />
<DataGridTextColumn Header="Col 2" Binding="{Binding Action}" />
<DataGridTextColumn Header="Col 3" Binding="{Binding Status}" />
</DataGrid.Columns>
</DataGrid>
<GridSplitter Grid.Row="0" Grid.Column="1"
VerticalAlignment="Stretch"
ResizeBehavior="PreviousAndNext"
Width="5" Background="#FFBCBCBC" />
<StackPanel Grid.Row="0" Grid.Column="2" Background="Red"></StackPanel>
</Grid>
</UserControl>
Lassen Sie uns einen Blick darauf werfen, was wir haben:
Perfect! Genau das brauche ich.
Aber! Wenn ich versuche, nur dynamisch einstellen Width
für jede Spalte innerhalb von DataGrid
, wird die ganze Vorlage gebrochen:
<DataGrid.Columns>
<DataGridTextColumn Width="0.2*" Header="Col 1 20%" Binding="{Binding Find}" />
<DataGridTextColumn Width="0.2*" Header="Col 2 20%" Binding="{Binding Action}" />
<DataGridTextColumn Width="0.6*" Header="Col 3 60%" Binding="{Binding Status}" />
</DataGrid.Columns>
Und auch eine interessante Sache. Wenn Sie versuchen, die Größe des Fensters zu ändern, wird alles normal. Beispiel: ScreenCast
Könnte mir jemand bei diesem Problem helfen?
Vielen Dank im Voraus.
Erfolgt dies, wenn Sie 'HorizontalAlignment =" Stretch "' für das Datenraster festlegen? – praty
@Rostislav, können Sie auch Fenster Markup? Ich kann das Problem mit dem Kontrollcode – ASh
@ASh nicht reproduzieren, hmmm ... Seltsam. Ich kann es auch nicht auf klarem WPF reproduzieren. Aber ich benutze Caliburn.Micro, und dieses Framework hat einen eigenen WindowManager, also haben wir vielleicht ein Problem dort. Code für die Reproduktion: [code.] (Https: // github.com/rolschewsky/Caliburn-SimpleInjector-Sample) –