我正在计算点(用户插入的点)之间的对数斜率:
为此,我使用两个DataGrid;首先显示坐标,第二个显示斜率。我正在使用一对DataGrid,因为我需要更新曲线来区分已更改的内容,坐标或斜率。
我希望更好地显示斜率的值:而不是显示在与点相同的行中,它们应显示在点之间,如第二个图所示。
我不知道在WPF中这样做的方法,也许设置一个更大的值到第二个DataGrid的标题的高度,所以所有行将移位一点(约5px),但我找不到这样做的方法。
有人可以指导我实现这个目标吗?
DataGrid以非常标准的方式定义:
<DataGrid x:Name="gridSlope" ItemsSource="{Binding Points, Mode=TwoWay}"
AutoGenerateColumns="False" Width="100"
Background="#19B0C4DE" BorderThickness="1"
BorderBrush="#19D3D3D3" CanUserResizeColumns="False"
CanUserResizeRows="False" CanUserSortColumns="False"
ClipboardCopyMode="IncludeHeader"
CellEditEnding="s1GridPendiente_CellEditEnding">
<DataGrid.Columns>
<DataGridTextColumn Binding="{Binding Path=Slope, StringFormat='{}{0:0.00}',
Mode=TwoWay,
UpdateSourceTrigger=PropertyChanged}"
Header="dB/oct"/>
</DataGrid.Columns>
</DataGrid>
答案 0 :(得分:1)
以下内容并不完美,但它与您的追求非常接近。这个想法的问题在于DataGridRow会剪切其内容,因此您无法将第3列移动到最理想的位置。
<DataGrid ItemsSource="{Binding Data}" AutoGenerateColumns="False" GridLinesVisibility="None">
<DataGrid.Columns>
<DataGridTextColumn Header="A" Binding="{Binding A}"/>
<DataGridTextColumn Header="B" Binding="{Binding B}"/>
<DataGridTemplateColumn Header="C" Width="Auto">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<TextBlock Text="{Binding Path=C}" Margin="0,5,0,-2"/>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
</DataGrid.Columns>
</DataGrid>
public class DataClass
{
public int A { get; set; }
public int B { get; set; }
public String C { get; set; }
public DataClass(int a, int b, String c)
{
A = a;
B = b;
C = c;
}
}
public List<DataClass> Data { get; set; }
public MainWindow()
{
Data = new List<DataClass>() { new DataClass(1, 2, "3"), new DataClass(2, 3, "4"), new DataClass(3, 4, "5"), new DataClass(4, 5, "") };
DataContext = this;
InitializeComponent();
}
答案 1 :(得分:1)
以下是截图:
要实现这一目标,您可以添加此
<DataGrid.ColumnHeaderStyle>
<Style TargetType="{x:Type DataGridColumnHeader}">
<Setter Property="FontWeight" Value="Bold"/>
<Setter Property="Margin" Value="0 0 0 10"></Setter>
</Style>
</DataGrid.ColumnHeaderStyle>
到<DataGrid x:Name="gridSlope" ...
之前的<DataGrid.Columns>
。
你可以在那里玩边缘,或者做你想做的事情:)(如果你不喜欢它就删除粗体......我只是在玩弄它......)