C# 如何删除WPF数据网格底部的不可用空间?
在这里,在顶部可以,但当我滚动到末尾时,就不好了: 我可以看出这是因为这个属性:HorizontalScrollBarVisibility,但无论我将其设置为什么,它都会占用空间。我希望它完全消失 如果我让窗口足够长以显示所有项目,它就消失了,这让我认为是垂直滚动条占用了空间,从而使datagrid显示垂直滚动条空间C# 如何删除WPF数据网格底部的不可用空间?,c#,.net,wpf,datagrid,styling,C#,.net,Wpf,Datagrid,Styling,在这里,在顶部可以,但当我滚动到末尾时,就不好了: 我可以看出这是因为这个属性:HorizontalScrollBarVisibility,但无论我将其设置为什么,它都会占用空间。我希望它完全消失 如果我让窗口足够长以显示所有项目,它就消失了,这让我认为是垂直滚动条占用了空间,从而使datagrid显示垂直滚动条空间 <Window x:Class="ProfitTracker.MainWindow" xmlns="http://schemas.m
<Window x:Class="ProfitTracker.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:ProfitTracker"
mc:Ignorable="d"
SizeToContent="Width"
DataContext="{Binding RelativeSource={RelativeSource Self}}"
Title="Profit Tracker"
WindowStyle="None"
AllowsTransparency="True"
Height="464">
<Window.Resources>
<local:NullImageConverter x:Key="nullImageConverter"/>
<Style x:Key="DataGridColumnSeparatorStyle" TargetType="DataGridCell">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate>
<Rectangle VerticalAlignment="Stretch" HorizontalAlignment="Stretch" Fill="#1e90ff"/>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
<Style x:Key="DataGridColumnAlarmStyle" TargetType="DataGridCell">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate>
<Rectangle VerticalAlignment="Stretch" HorizontalAlignment="Stretch" Fill="#000000"/>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
<Style x:Key="RowStyleWithAlternation" TargetType="DataGridRow">
<Setter Property="Background" Value="#141414"/>
<Setter Property="Foreground" Value="White"/>
<Setter Property="FontWeight" Value="Normal"/>
<Style.Triggers>
<Trigger Property="AlternationIndex" Value="1">
<Setter Property="Background" Value="#1e1e1e"/>
</Trigger>
</Style.Triggers>
</Style>
<Style TargetType="DataGridCell">
<Setter Property="TextBlock.TextAlignment" Value="Center" />
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type DataGridCell}">
<Grid Background="{TemplateBinding Background}">
<ContentPresenter VerticalAlignment="Stretch"/>
</Grid>
</ControlTemplate>
</Setter.Value>
</Setter>
<Setter Property="VerticalAlignment" Value="Stretch"/>
<Setter Property="Padding" Value="0"/>
<Setter Property="Margin" Value="0"/>
<Setter Property="BorderThickness" Value="0"/>
<Style.Triggers>
<MultiDataTrigger>
<MultiDataTrigger.Conditions>
<Condition Binding="{Binding Column.Header, RelativeSource={RelativeSource Self}}" Value=" "/>
</MultiDataTrigger.Conditions>
<MultiDataTrigger.Setters>
<Setter Property="DataGridCell.Background" Value="{Binding Path=Balance.ProfitPercentageColor}" />
</MultiDataTrigger.Setters>
</MultiDataTrigger>
<MultiDataTrigger>
<MultiDataTrigger.Conditions>
<Condition Binding="{Binding Column.Header, RelativeSource={RelativeSource Self}}" Value="Symbol"/>
</MultiDataTrigger.Conditions>
<MultiDataTrigger.Setters>
<Setter Property="DataGridCell.Background" Value="{Binding Path=Balance.ProfitPercentageColor}" />
</MultiDataTrigger.Setters>
</MultiDataTrigger>
<MultiDataTrigger>
<MultiDataTrigger.Conditions>
<Condition Binding="{Binding Column.Header, RelativeSource={RelativeSource Self}}" Value="Profit"/>
</MultiDataTrigger.Conditions>
<MultiDataTrigger.Setters>
<Setter Property="DataGridCell.Background" Value="{Binding Path=Balance.ProfitPercentageColor}" />
<Setter Property="DataGridCell.Foreground" Value="{Binding Path=Balance.ProfitColor}" />
</MultiDataTrigger.Setters>
</MultiDataTrigger>
<MultiDataTrigger>
<MultiDataTrigger.Conditions>
<Condition Binding="{Binding Column.Header, RelativeSource={RelativeSource Self}}" Value="PNL %"/>
</MultiDataTrigger.Conditions>
<MultiDataTrigger.Setters>
<Setter Property="DataGridCell.Background" Value="{Binding Path=Balance.ProfitPercentageColor}" />
<Setter Property="DataGridCell.Foreground" Value="{Binding Path=Balance.ProfitColor}" />
</MultiDataTrigger.Setters>
</MultiDataTrigger>
<MultiDataTrigger>
<MultiDataTrigger.Conditions>
<Condition Binding="{Binding Column.Header, RelativeSource={RelativeSource Self}}" Value="Day %"/>
</MultiDataTrigger.Conditions>
<MultiDataTrigger.Setters>
<Setter Property="DataGridCell.Background" Value="{Binding Path=PriceChangeDailyBackColor}" />
<Setter Property="DataGridCell.Foreground" Value="{Binding Path=PriceChangeDailyForeColor}" />
</MultiDataTrigger.Setters>
</MultiDataTrigger>
<MultiDataTrigger>
<MultiDataTrigger.Conditions>
<Condition Binding="{Binding Column.Header, RelativeSource={RelativeSource Self}}" Value="Hour %"/>
</MultiDataTrigger.Conditions>
<MultiDataTrigger.Setters>
<Setter Property="DataGridCell.Background" Value="{Binding Path=PriceChangeHourlyBackColor}" />
<Setter Property="DataGridCell.Foreground" Value="{Binding Path=PriceChangeHourlyForeColor}" />
</MultiDataTrigger.Setters>
</MultiDataTrigger>
<MultiDataTrigger>
<MultiDataTrigger.Conditions>
<Condition Binding="{Binding Column.Header, RelativeSource={RelativeSource Self}}" Value="Min %"/>
</MultiDataTrigger.Conditions>
<MultiDataTrigger.Setters>
<Setter Property="DataGridCell.Foreground" Value="{Binding Path=PriceChangeMinutelyForeColor}" />
</MultiDataTrigger.Setters>
</MultiDataTrigger>
<MultiDataTrigger>
<MultiDataTrigger.Conditions>
<Condition Binding="{Binding Column.Header, RelativeSource={RelativeSource Self}}" Value="Net BTC/m"/>
</MultiDataTrigger.Conditions>
<MultiDataTrigger.Setters>
<Setter Property="DataGridCell.Background" Value="{Binding Path=LastMinuteVolumeColor}" />
</MultiDataTrigger.Setters>
</MultiDataTrigger>
<Trigger Property="IsSelected" Value="True">
<Setter Property="Background" Value="{x:Null}" />
<Setter Property="BorderBrush" Value="{x:Null}" />
</Trigger>
</Style.Triggers>
</Style>
<Style TargetType="DataGridColumnHeader">
<Setter Property="HorizontalContentAlignment" Value="Center" />
</Style>
<Style TargetType="{x:Type ProgressBar}">
<Setter Property="Padding" Value="0"/>
<Setter Property="Margin" Value="0"/>
<Setter Property="VerticalAlignment" Value="Stretch"/>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="ProgressBar">
<Border BorderThickness="1" Background="#006400" CornerRadius="0" Padding="0">
<Grid x:Name="PART_Track">
<Rectangle x:Name="PART_Indicator" HorizontalAlignment="Left" Fill="#640000" />
</Grid>
</Border>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
<CollectionViewSource Source="{Binding Coins}" IsLiveSortingRequested="True" x:Key="MyKey" />
</Window.Resources>
<Grid>
<DataGrid Name="dataGrid" ItemsSource="{Binding Source={StaticResource MyKey}}" GridLinesVisibility="None" HorizontalScrollBarVisibility="Hidden" RowHeaderWidth="0" IsReadOnly="True" CanUserAddRows="False" CanUserResizeColumns="False" CanUserResizeRows="False" AutoGenerateColumns="False" AlternatingRowBackground="#282828" RowStyle="{StaticResource RowStyleWithAlternation}">
<DataGrid.Columns>
<DataGridTemplateColumn Header=" " MinWidth="0" Width="10"/>
<DataGridTemplateColumn Header="Symbol" Width="74">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal">
<Image RenderOptions.BitmapScalingMode="HighQuality" Stretch="Uniform" HorizontalAlignment="Center" VerticalAlignment="Center" Height="16" Margin="4,2,6,2" Source="{Binding IconFile, Converter={StaticResource nullImageConverter}}" />
<TextBlock Text="{Binding Path=Symbol}" HorizontalAlignment="Left"/>
</StackPanel>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
<DataGridTemplateColumn MinWidth="0" Width="2" CellStyle="{StaticResource DataGridColumnSeparatorStyle}"/>
<DataGridTextColumn Header="Lowest" Width="64" Binding="{Binding Path=LowestDailyPriceDisplay}" Foreground="#b40000"/>
<DataGridTemplateColumn Header="Price" Width="64">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<Grid>
<ProgressBar Value="{Binding Path=PriceProgress, Mode=OneWay}" Minimum="0" Maximum="1"/>
<TextBlock Text="{Binding Path=PriceDecimalDisplay}" HorizontalAlignment="Center" VerticalAlignment="Center"/>
</Grid>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
<DataGridTextColumn Header="Highest" Width="64" Binding="{Binding Path=HighestDailyPriceDisplay}" Foreground="#00b400"/>
<DataGridTemplateColumn MinWidth="0" Width="2" CellStyle="{StaticResource DataGridColumnSeparatorStyle}"/>
<DataGridTextColumn Header="Unit Price" Width="64" Binding="{Binding Path=Balance.UnitPriceDisplay}" />
<DataGridTextColumn Header="Amount" Width="64" Binding="{Binding Path=Balance.AvailableAmountDisplay}" />
<DataGridTextColumn Header="Capital" Width="64" Binding="{Binding Path=Balance.TotalValueDisplay}" />
<DataGridTemplateColumn MinWidth="0" Width="2" CellStyle="{StaticResource DataGridColumnSeparatorStyle}"/>
<DataGridTextColumn Header="Profit" Width="64" Binding="{Binding Path=Balance.ProfitDisplay}"/>
<DataGridTextColumn Header="PNL %" Width="64" Binding="{Binding Path=Balance.ProfitPercentageDisplay}"/>
<DataGridTextColumn Header="Day %" Width="64" Binding="{Binding Path=PriceChangeInPercentDailyDisplay}"/>
<DataGridTextColumn Header="Hour %" Width="64" Binding="{Binding Path=PriceChangeInPercentHourlyDisplay}"/>
<DataGridTemplateColumn MinWidth="0" Width="2" CellStyle="{StaticResource DataGridColumnSeparatorStyle}"/>
<DataGridTextColumn Header="Min %" Width="64" Binding="{Binding Path=PriceChangeInPercentMinutelyDisplay}"/>
<DataGridTemplateColumn Header="Vol BTC/h" Width="64">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<Grid>
<ProgressBar Value="{Binding Path=TotalSellVolumePercentage, Mode=OneWay}" Minimum="0" Maximum="1"/>
<TextBlock Text="{Binding Path=LastHourVolumeInBtcDisplay}" HorizontalAlignment="Center" VerticalAlignment="Center"/>
</Grid>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
<DataGridTextColumn Header="Net BTC/m" Width="64" Binding="{Binding Path=LastMinuteVolumeInBtcDisplay}"/>
</DataGrid.Columns>
</DataGrid>
<Border x:Name="DragControl" local:EnableDragHelper.EnableDrag="True" Visibility="Hidden">
<TextBlock Text=" "/>
</Border>
</Grid>
哦,好吧,从你的评论来看,你好像想让窗口自动调整大小以适应内容,对吗?默认情况下,WPF windows不会这样做,但您可以通过以下方式启用它:
<Window
...etc....
SizeToContent="Width">
您的代码没有导致它出现在我的计算机上,这一定是由于恶意模板或项目中未包含的其他内容造成的。所以您没有看到水平滚动条?没有,一点也没有。我必须删除您对转换器的使用,因为您尚未发布该转换器的源代码,而我绑定到的ItemsSource是一个字符串[]
(尽管我怀疑这会导致类似的情况)。如果你想发布一篇文章,我很乐意再看一看,但你的项目中似乎有其他东西导致了这一点,而你没有包括在内。事实上,请稍等……你的内容似乎一直延伸到列表控件的右边缘(可能超出了列表控件),在这种情况下,它的可见性是正常的。你到底想做什么,夹紧内容使滚动条不出现?是的,基本上调整窗口大小使其适合宽度。我将发布显示窗口顶部和底部的更新图像,因为当我在顶部时,我看不到水平滚动条。