你知道怎样把图例放到绘图区之外吗?2(用代码和xaml)谢谢你的帮助!顺式
1dkrff031#
当前D3库中没有将图例移到绘图仪外部的实现。最多只能通过编辑源代码中的Legend.xaml.cs文件,将图例移到绘图仪中的其他位置。您必须更改代码隐藏中的依赖属性,才能在绘图仪区域周围移动图例。如果您想将图例置于绘图仪之外,您必须重新创建Legend.xaml,使其独立于绘图仪,但仍能接收到创建图例所需的相同信息。如果您确实做到了这一点,请将其发布在此处作为答案!
ccrfmcuu2#
也许答案来得有点晚,但我也碰到了这个问题。这是微软的风格研究动态数据显示绘图仪
<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:local="clr-namespace:Microsoft.Research.DynamicDataDisplay" xmlns:common="clr-namespace:Microsoft.Research.DynamicDataDisplay.Common"> <Style x:Key="defaultPlotterStyle" TargetType="{x:Type local:Plotter}"> <Setter Property="Control.Background" Value="White"/> <Setter Property="Control.BorderBrush" Value="Black"/> </Style> <ControlTemplate x:Key="defaultPlotterTemplate" TargetType="{x:Type local:Plotter}"> <common:NotifyingGrid Name="PART_ContentsGrid" Background="{TemplateBinding Control.Background}"> <Grid.RowDefinitions> <RowDefinition Height="auto"/> <RowDefinition/> <RowDefinition Height="auto"/> </Grid.RowDefinitions> <common:NotifyingStackPanel Name="PART_HeaderPanel" Orientation="Vertical" Grid.Row="0"/> <common:NotifyingGrid Name="PART_MainGrid" Row="1"> <Grid.RowDefinitions> <RowDefinition Height="auto"/> <RowDefinition/> <RowDefinition Height="auto"/> </Grid.RowDefinitions> <Grid.ColumnDefinitions> <ColumnDefinition Width="auto"/> <ColumnDefinition/> <ColumnDefinition Width="auto"/> </Grid.ColumnDefinitions> <common:NotifyingGrid Name="PART_CentralGrid" Column="1" Row="1" ClipToBounds="true" Background="Transparent"/> <common:NotifyingCanvas Name="PART_MainCanvas" Grid.Column="1" Grid.Row="1" ClipToBounds="true"/> <Rectangle Name="PART_ContentBorderRectangle" Grid.Column="1" Grid.Row="1" Stroke="{TemplateBinding Control.BorderBrush}" StrokeThickness="{TemplateBinding Control.BorderThickness}"/> <common:NotifyingStackPanel Name="PART_LeftPanel" Grid.Column="0" Grid.Row="1" Orientation="Horizontal"/> <common:NotifyingStackPanel Name="PART_RightPanel" Grid.Column="2" Grid.Row="1" Orientation="Horizontal"/> <common:NotifyingStackPanel Name="PART_BottomPanel" Grid.Column="1" Grid.Row="2" Orientation="Vertical"/> <common:NotifyingStackPanel Name="PART_TopPanel" Grid.Column="1" Grid.Row="0" Orientation="Vertical"/> </common:NotifyingGrid> <common:NotifyingCanvas Name="PART_ParallelCanvas" Grid.Column="1" Grid.Row="1"/> <common:NotifyingStackPanel Name="PART_FooterPanel" Orientation="Vertical" Grid.Row="2"/> </common:NotifyingGrid> </ControlTemplate> </ResourceDictionary>
因此,技巧是您必须修改图例的父级及其父级属性,以将所需的元素以正确的大小移动到正确的位置。PART_CentralGrid元素包含图例项。我执行了以下操作:
legendGrandparent.Width = plotter.Width - 100; legendGrandparent.HorizontalAlignment = HorizontalAlignment.Left; legendParent.ClipToBounds = false; legend.LegendLeft = plotter.Width - 125;
其中,图例祖节点是零件主网格,图例父节点是零件中心网格。之前:
之后:
2条答案
按热度按时间1dkrff031#
当前D3库中没有将图例移到绘图仪外部的实现。最多只能通过编辑源代码中的Legend.xaml.cs文件,将图例移到绘图仪中的其他位置。您必须更改代码隐藏中的依赖属性,才能在绘图仪区域周围移动图例。
如果您想将图例置于绘图仪之外,您必须重新创建Legend.xaml,使其独立于绘图仪,但仍能接收到创建图例所需的相同信息。如果您确实做到了这一点,请将其发布在此处作为答案!
ccrfmcuu2#
也许答案来得有点晚,但我也碰到了这个问题。
这是微软的风格研究动态数据显示绘图仪
因此,技巧是您必须修改图例的父级及其父级属性,以将所需的元素以正确的大小移动到正确的位置。
PART_CentralGrid元素包含图例项。
我执行了以下操作:
其中,图例祖节点是零件主网格,图例父节点是零件中心网格。
之前:
之后: