Используя сложный разделитель сетки на WPF
Я не уверен, как использовать разделитель сетки.
Я пользователь, чтобы включить, чтобы изменить размеры макетов внутри widnow. например, в XAML я хочу, чтобы пользователь изменил размер панели деформации под названием: gridDetails
Спасибо за ответы
Присоединение XAML:
<Window
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="clr-namespace:WpfApplication1" x:Name="Main" x:Class="WpfApplication1.MainWindow"
Title="P analyzer" Height="616.15" Width="1033" WindowState="Maximized" Closing="Main_Closing">
<Window.DataContext>
<local:DataGridViewModel/>
</Window.DataContext>
<Window.Resources>
<Style x:Key="ListViewItemStyle" TargetType="ListViewItem">
<Setter Property="Margin" Value="3"/>
<Setter Property="Background" Value="Transparent"/>
<Setter Property="BorderThickness" Value="1"/>
<Setter Property="BorderBrush" Value="Transparent"/>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="ListViewItem">
<Border
Background="{TemplateBinding Background}"
BorderBrush="{TemplateBinding BorderBrush}"
BorderThickness="{TemplateBinding BorderThickness}"
Padding="{TemplateBinding Padding}">
<ContentPresenter/>
</Border>
</ControlTemplate>
</Setter.Value>
</Setter>
<Style.Triggers>
<Trigger Property="IsSelected" Value="True">
<Setter Property="BorderBrush" Value="Red"/>
<Setter Property="BorderThickness" Value="2"/>
</Trigger>
<Trigger Property="IsMouseOver" Value="True">
<Setter Property="Background" Value="LightBlue"/>
</Trigger>
</Style.Triggers>
</Style>
<local:BackGroundConverter x:Key="converter"></local:BackGroundConverter>
</Window.Resources>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="1*"/>
<!--start-->
<ColumnDefinition Width="1*"/>
<ColumnDefinition Width="1*"/>
<!--space for putting progress bar in the middle-->
<ColumnDefinition Width="1"/>
<!--the end of the data grid data-->
<ColumnDefinition Width="0.05*"/>
<!--space betweeen datagrid data and filter-->
<ColumnDefinition Width="3*"/>
<!--filter-->
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="21*"/>
<!--Menu Bar-->
<RowDefinition Height="4*"/>
<!--Space-->
<RowDefinition Height="21*"/>
<!--progress Bar-->
<RowDefinition Height="4*"/>
<!--space-->
<RowDefinition Height="413*"/>
<!-- grid contain progress bar and datagrid data-->
<RowDefinition Height="60*"/>
<!-- Space-->
<RowDefinition Height="63*"/>
<!--grid which contain all of the translated fileds-->
</Grid.RowDefinitions>
<Menu Grid.Column="0" Grid.ColumnSpan="6" Grid.Row="0">
<MenuItem Header="File" >
<MenuItem Header="Load" Click="btnBrowse_Click"></MenuItem>
</MenuItem>
<MenuItem Header="About" ></MenuItem>
</Menu>
<ProgressBar x:Name="progressBarFile" Grid.Row="2" Grid.Column="1" />
<CheckBox x:Name="CB2Lines" Grid.Row="2" Grid.Column="0" HorizontalAlignment="Center" VerticalAlignment="Center" Content="2 Lines" Checked="CB2Lines_Checked" Unchecked="CB2Lines_Unchecked" ></CheckBox>
<Grid Grid.Row="4" Grid.Column="0" Grid.ColumnSpan="3">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="85*"/>
<ColumnDefinition Width="423*"/>
</Grid.ColumnDefinitions>
<Grid Grid.Column="0" Grid.ColumnSpan="5" Background="Aqua" >
<ListView x:Name="LV" ItemsSource= "{Binding Lggv}" SelectionChanged="dataGridData_SelectionChanged" ItemContainerStyle="{StaticResource ListViewItemStyle}" >
<ListView.ItemTemplate>
<DataTemplate>
<StackPanel >
<Border BorderThickness="1" BorderBrush="Black">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="150"></ColumnDefinition>
<ColumnDefinition Width="55"></ColumnDefinition>
<ColumnDefinition Width="1*"></ColumnDefinition>
</Grid.ColumnDefinitions>
<TextBlock x:Name="tbHeader" Text="{Binding Info }" AllowDrop="True" FontWeight="Bold" Grid.Column="2" Visibility="{Binding Visibility_Header}" >
<TextBlock.Style>
<Style TargetType="TextBlock">
<Setter Property="Background">
<Setter.Value>
<!-- this is the default background-->
<LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">
<GradientStop Color="#FFCEE6C6" Offset="0.008"/>
<GradientStop Color="#FF9ECF8C" Offset="0.987"/>
</LinearGradientBrush>
</Setter.Value>
</Setter>
</Style>
</TextBlock.Style>
</TextBlock>
</Grid>
</Border>
<Grid x:Name="GridData">
<Grid.Background>
<MultiBinding Converter="{StaticResource converter }">
<Binding Path="Type"></Binding>
<Binding Path="NodeID"></Binding>
<Binding Path="TLV"></Binding>
</MultiBinding>
</Grid.Background>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="150"></ColumnDefinition>
<ColumnDefinition Width="55"></ColumnDefinition>
<ColumnDefinition Width="1*"></ColumnDefinition>
</Grid.ColumnDefinitions>
<Border Grid.Column="0" BorderThickness="1" BorderBrush="Black">
<TextBlock Text="{Binding DateTime}" ></TextBlock>
</Border>
<Border Grid.Column="1" BorderThickness="1" BorderBrush="Black">
<TextBlock Text="{Binding ComPort}"></TextBlock>
</Border>
<Border Grid.Column="2" BorderThickness="1" BorderBrush="Black">
<TextBlock Text="{Binding Data}" ></TextBlock>
</Border>
</Grid>
</StackPanel>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
</Grid>
</Grid>
<Grid Grid.Column="5" Grid.Row="4" >
<Grid.ColumnDefinitions>
<ColumnDefinition Width="1*"/>
<ColumnDefinition Width="1*"/>
<ColumnDefinition Width="1*"/>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="1*"/>
<RowDefinition Height="1*"/>
</Grid.RowDefinitions>
<local:ItemFilter x:Name="TypeFilter" Grid.Column="0" Grid.Row="0" ></local:ItemFilter>
<local:ItemFilter x:Name="NodeIDFilter" Grid.Column="1" Grid.Row="0" ></local:ItemFilter>
<local:ItemFilter x:Name="TLVFilter" Grid.Column="2" Grid.Row="0"></local:ItemFilter>
<!--contain filter pet type-->
</Grid>
<ScrollViewer Grid.Column="0" Grid.Row="5" Grid.RowSpan="2" Grid.ColumnSpan="6">
<WrapPanel x:Name="gridDetails" UseLayoutRounding="True" >
</WrapPanel>
</ScrollViewer>
</Grid>
1 ответ
Решение
Пожалуйста, не просто сбрасывайте сотни строк кода, большинство из которых не имеет значения. Я, если вы не собираетесь делать пример, по крайней мере, вырезать части, которые не имеют значения.
Вам нужно добавить строку сетки для хранения разделителя сетки:
...
<Grid.RowDefinitions>
...
<!-- grid contain progress bar and datagrid data-->
<RowDefinition Height="60*"/>
<!-- A grid space for the gridsplitter-->
<RowDefinition Height="5"/>
<!-- Space-->
<RowDefinition Height="63*"/>
<!--grid which contain all of the translated fileds-->
</Grid.RowDefinitions>
...
Затем добавьте решетку в указанный ряд:
...
<GridSplitter Grid.Row="5" HorizontalAlignment="Stretch" VerticalAlignment="Stretch"/>
<ScrollViewer Grid.Column="0" Grid.Row="6" Grid.RowSpan="2" Grid.ColumnSpan="6">
<WrapPanel x:Name="gridDetails" UseLayoutRounding="True" >
</WrapPanel>
</ScrollViewer>