調整應用程序的窗口大小時遇到問題。我有兩個DataGrid,每個DataGrid都放置在它自己的Grid of Grid中,另一個Grid放置在Grid GridSplitter的中間,用於調整DataGrid的大小。使用WPF中的dataGrid調整大小的網格
通過從這種狀態降低窗口寬度,我需要得到這個:
這樣,每一列和窗口會打的MinWidth。 但是,相反的,我得到這個(左列不是在其MinWidth):
我注意到,它是在DataGrid是停止/減速網格的列萎縮列導致最小尺寸的窗口切割第二部分。當列更寬時,另一列也會發生同樣的情況。
這是我的XAML文件:
<Window x:Class="DC_SB.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="Application" Height="350" Width="525" MinWidth="430" MinHeight="150" Background="WhiteSmoke">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="*" />
</Grid.RowDefinitions>
<Menu Grid.Row="0" Background="#FFE0E0E0">
<MenuItem Header="Settings">
<MenuItem Header="Key bindings" Click="keyBindings" />
<MenuItem Header="Color settings" Click="colorSettings" />
</MenuItem>
<MenuItem Header="View">
<MenuItem x:Name="ViewCounters" Header="Counters" IsCheckable="True" IsChecked="True" Click="OnMouseDownView" />
<MenuItem x:Name="ViewSounds" Header="Sounds" IsCheckable="True" IsChecked="True" Click="OnMouseDownView" />
</MenuItem>
<MenuItem Header="Enable">
<MenuItem x:Name="EnableCounters" Header="Counters" IsCheckable="True" IsChecked="True" Click="OnMouseDownEnable" />
<MenuItem x:Name="EnableSounds" Header="Sounds" IsCheckable="True" IsChecked="True" Click="OnMouseDownEnable" />
</MenuItem>
</Menu>
<Grid Grid.Row="1" x:Name="Grid" >
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*" MinWidth="205" />
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="*" MinWidth="205" />
</Grid.ColumnDefinitions>
<GridSplitter Margin="0,25,0,10" Grid.Column="1" ResizeBehavior="PreviousAndNext" Width="3" />
<Grid x:Name="CountersGrid" Grid.Column="0">
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="*" />
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<Label Grid.Row="0" Content="Counters" HorizontalAlignment="Left" VerticalAlignment="Top" Margin="10,0,0,0" />
<DataGrid x:Name="CountersList" Grid.Row="1" HorizontalAlignment="Stretch" Margin="10,0,10,10" AutoGenerateColumns="False" VerticalAlignment="Stretch"
CanUserResizeColumns="True" CanUserReorderColumns="False" CanUserSortColumns="False" SelectionMode="Single" CanUserDeleteRows="False"
CanUserAddRows="False" CanUserResizeRows="False" SelectionUnit="FullRow" MouseDoubleClick="OnDoubleClick" HeadersVisibility="Column" >
<DataGrid.Columns>
<DataGridTextColumn Header="Name" IsReadOnly="True" Binding="{Binding Path=Name}" />
<DataGridTextColumn Header="Path" IsReadOnly="True" Binding="{Binding Path=Path}" />
<DataGridTextColumn Header="Count" IsReadOnly="True" Binding="{Binding Path=CountKey}" />
</DataGrid.Columns>
<DataGrid.Resources>
<Style TargetType="{x:Type DataGridColumnHeader}">
<Setter Property="Foreground" Value="Black" />
</Style>
</DataGrid.Resources>
</DataGrid>
<Button Grid.Row="2" Content="Add" HorizontalAlignment="Left" Margin="10,0,0,10" VerticalAlignment="Bottom" Width="60" Click="addCounter" />
<Button Grid.Row="2" Content="Remove" HorizontalAlignment="Left" Margin="75,0,0,10" VerticalAlignment="Bottom" Width="60" Click="removeCounter" />
<Button Grid.Row="2" Content="-" HorizontalAlignment="Right" Margin="0,0,40,10" VerticalAlignment="Bottom" Width="25" Click="decrement" />
<Button Grid.Row="2" Content="+" HorizontalAlignment="Right" Margin="0,0,10,10" VerticalAlignment="Bottom" Width="25" Click="increment" />
</Grid>
<Grid x:Name="SoundsGrid" Grid.Column="2">
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="*" />
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<Label Grid.Row="0" Content="Sounds" HorizontalAlignment="Left" VerticalAlignment="Top" Margin="10,0,0,0" />
<Image Grid.Row="0" HorizontalAlignment="Right" Margin="0,8,110,0" VerticalAlignment="Top" Height="10" Width="10" >
<Image.Source>
<BitmapImage UriSource="volume.png" />
</Image.Source>
</Image>
<Slider x:Name="Slider" Grid.Row="0" HorizontalAlignment="Right" VerticalAlignment="Bottom" Margin="0,0,10,5" Width="100" Maximum="100" Minimum="0"
AutoToolTipPlacement="BottomRight" IsMoveToPointEnabled="True" ValueChanged="volume" >
<Slider.LayoutTransform>
<ScaleTransform ScaleY="0.75" CenterX="15" CenterY="15"/>
</Slider.LayoutTransform>
</Slider>
<DataGrid x:Name="SoundsList" Grid.Row="1" HorizontalAlignment="Stretch" Margin="10,0,10,10" AutoGenerateColumns="False" VerticalAlignment="Stretch"
CanUserResizeColumns="True" CanUserReorderColumns="False" CanUserSortColumns="False" SelectionMode="Single" CanUserDeleteRows="False"
CanUserAddRows="False" CanUserResizeRows="False" SelectionUnit="FullRow" MouseDoubleClick="OnDoubleClick" HeadersVisibility="Column" >
<DataGrid.Columns>
<DataGridTextColumn Header="Name" IsReadOnly="True" Binding="{Binding Path=Name}" />
<DataGridTextColumn Header="Path" IsReadOnly="True" Binding="{Binding Path=Path}" />
<DataGridTextColumn Header="Key" IsReadOnly="True" Binding="{Binding Path=CountKey}" />
</DataGrid.Columns>
<DataGrid.Resources>
<Style TargetType="{x:Type DataGridColumnHeader}">
<Setter Property="Foreground" Value="Black" />
</Style>
</DataGrid.Resources>
</DataGrid>
<Button Grid.Row="2" Content="Add" HorizontalAlignment="Left" Margin="10,0,0,10" VerticalAlignment="Bottom" Width="60" Click="addSound" />
<Button Grid.Row="2" Content="Remove" HorizontalAlignment="Left" Margin="75,0,0,10" VerticalAlignment="Bottom" Width="60" Click="removeSound" />
<Button Grid.Row="2" HorizontalAlignment="Right" Margin="0,0,40,10" VerticalAlignment="Bottom" Width="25" Height="22" Click="play" >
<Image Source="play.png" Width="8" Height="8" />
</Button>
<Button Grid.Row="2" HorizontalAlignment="Right" Margin="0,0,10,10" VerticalAlignment="Bottom" Width="25" Height="22" Click="stop" >
<Image Source="stop.png" Width="8" Height="8" />
</Button>
</Grid>
</Grid>
</Grid>
我需要的是讓它儘量的DataGrid不infulence網格列的調整。 感謝您的幫助
使用'SizeToContent = 「WidthAndHeight」'你的窗口設置 – prasy
不,不利於 – user1869453
嘗試設置'MinWidth = 「430」''要和Auto'使用'SizeToContent = 「WidthAndHeight」' – prasy