我有一个带有重叠分隔符的网格,我将其用作网格的光标。我通过将边距设置为网格ActualHeight的百分比,以编程方式在网格上移动分隔符。这可以正常工作,直到边距设置为大于(grid.ActualHeight / 2),此时分隔符不再可见。
我尝试将垂直对齐(默认为顶部)设置为Bottom或Center,并相应地更改位置,结果相似。
网格隐藏分隔符有什么原因吗?如何确保分隔符可见?
谢谢, 斯图尔特
编辑:
这是网格的XAML。边框以编程方式添加到网格中,这就是网格包含行和列的原因。
<Grid Name="graph1" Grid.Row="1" Margin="2" MouseLeftButtonDown="MouseDown" Background="#00000000">
<Grid.RowDefinitions>
<RowDefinition />
<RowDefinition />
<RowDefinition />
<RowDefinition />
<RowDefinition />
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition />
<ColumnDefinition />
<ColumnDefinition />
<ColumnDefinition />
<ColumnDefinition />
<ColumnDefinition />
</Grid.ColumnDefinitions>
<Separator Name="graph1Cursor" Grid.RowSpan="5" Grid.ColumnSpan="6" VerticalAlignment="Top"/>
</Grid>
我用来设置保证金的代码:
graph1Cursor.Margin = new Thickness(0, y, 0, y);
其中y是光标位置相对于网格的ActualHeight的高度。
答案 0 :(得分:1)
我找到了一个解决方案,虽然我不确定为什么解决方案比原始解决方案更有效...我没有直接将分隔符放在Grid中,而是将其嵌套在StackPanel中。除此之外的所有代码保持不变。
以下是具有嵌套StackPanel的网格的XAML:
<Grid Name="graph1" Grid.Row="1" Margin="2" MouseLeftButtonDown="MouseDown" Background="#00000000">
<Grid.RowDefinitions>
<RowDefinition />
<RowDefinition />
<RowDefinition />
<RowDefinition />
<RowDefinition />
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition />
<ColumnDefinition />
<ColumnDefinition />
<ColumnDefinition />
<ColumnDefinition />
<ColumnDefinition />
</Grid.ColumnDefinitions>
<StackPanel Grid.RowSpan="5" Grid.ColumnSpan="6">
<Separator Name="graph1Cursor" VerticalAlignment="Top" />
</StackPanel>
</Grid>
我会将此标记为已回答。如果有人有更好的解决方案,我会发表意见。
答案 1 :(得分:0)
另一种解决方案是从分隔符设置Grid.Row-Property而不是Grid.RowSpan-Property,而在代码中只设置Row-Property:
的Xaml:
<Grid Name="graph1" Grid.Row="1" Margin="2" Background="#00000000">
<Grid.RowDefinitions>
<RowDefinition />
<RowDefinition />
<RowDefinition />
<RowDefinition />
<RowDefinition />
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition />
<ColumnDefinition />
<ColumnDefinition />
<ColumnDefinition />
<ColumnDefinition />
<ColumnDefinition />
</Grid.ColumnDefinitions>
<Button Click="Button_Click"/>
<Separator Name="graph1Cursor" Grid.Row="1" Grid.ColumnSpan="6" VerticalAlignment="Top"/>
</Grid>
在你的代码中,你可以从graph1Cursor中设置Row-Property:
Grid.SetRow(graph1Cursor, 4);