解决Canvas无法缩放,配合Viewbox限定Canvas大小来完成缩放

This commit is contained in:
YONGYE 2025-10-10 16:34:35 +08:00
parent e9d9e67851
commit ec3c068817

View File

@ -3,212 +3,215 @@
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
mc:Ignorable="d" d:DesignWidth="200" Height="482"> mc:Ignorable="d" d:DesignWidth="200" >
<Border Background="White" BorderBrush="#CCCCCC" BorderThickness="1"> <Border Background="White" BorderBrush="#CCCCCC" BorderThickness="1">
<Grid Margin="0,0,0,-1"> <Grid Margin="0,0,0,-1">
<Grid.RowDefinitions> <Grid.RowDefinitions>
<RowDefinition Height="30"/> <RowDefinition Height="30"/>
<RowDefinition Height="*"/> <RowDefinition Height="*"/>
</Grid.RowDefinitions> </Grid.RowDefinitions>
<!-- 标题栏 --> <!-- 标题栏 -->
<TextBlock Grid.Row="0" <TextBlock Grid.Row="0"
Text="{Binding SensorName, RelativeSource={RelativeSource AncestorType=UserControl}}" Text="{Binding SensorName, RelativeSource={RelativeSource AncestorType=UserControl}}"
HorizontalAlignment="Center" HorizontalAlignment="Center"
VerticalAlignment="Center" VerticalAlignment="Center"
FontWeight="Bold" FontWeight="Bold"
Background="{Binding HeaderBackground, RelativeSource={RelativeSource AncestorType=UserControl}}"/> Background="{Binding HeaderBackground, RelativeSource={RelativeSource AncestorType=UserControl}}"/>
<!-- 图表区域 --> <!-- 图表区域 -->
<Canvas Grid.Row="1" Background="White" Margin="20,20,20,3" Name="ChartCanvas"> <Viewbox Grid.Row="1" Stretch="Uniform">
<!-- 柱状图容器边框 - 左边界线 -->
<Line X1="40" Y1="20" X2="40" Y2="420" Stroke="Black" StrokeThickness="1"/>
<!-- 右边界线 -->
<Line X1="120" Y1="20" X2="120" Y2="420" Stroke="Black" StrokeThickness="1"/>
<!-- 顶部边界线 -->
<Line X1="40" Y1="20" X2="120" Y2="20" Stroke="Black" StrokeThickness="1"/>
<!-- 底部边界线 -->
<Line X1="40" Y1="420" X2="120" Y2="420" Stroke="Black" StrokeThickness="1"/>
<!-- 大刻度线和标签 - 从40到-40每5个单位一个刻度 --> <Canvas Width="160" Height="440" Grid.Row="1" Background="White" Margin="20,20,20,3" Name="ChartCanvas">
<!-- 40 --> <!-- 柱状图容器边框 - 左边界线 -->
<Line X1="120" Y1="20" X2="130" Y2="20" Stroke="Black" StrokeThickness="1"/> <Line X1="40" Y1="20" X2="40" Y2="420" Stroke="Black" StrokeThickness="1"/>
<TextBlock Canvas.Left="135" Canvas.Top="15" Text="40" FontSize="10"/> <!-- 右边界线 -->
<Line X1="120" Y1="20" X2="120" Y2="420" Stroke="Black" StrokeThickness="1"/>
<!-- 顶部边界线 -->
<Line X1="40" Y1="20" X2="120" Y2="20" Stroke="Black" StrokeThickness="1"/>
<!-- 底部边界线 -->
<Line X1="40" Y1="420" X2="120" Y2="420" Stroke="Black" StrokeThickness="1"/>
<!-- 35 --> <!-- 大刻度线和标签 - 从40到-40每5个单位一个刻度 -->
<Line X1="40" Y1="45" X2="130" Y2="45" Stroke="Black" StrokeThickness="1"/> <!-- 40 -->
<TextBlock Canvas.Left="135" Canvas.Top="40" Text="35" FontSize="10"/> <Line X1="120" Y1="20" X2="130" Y2="20" Stroke="Black" StrokeThickness="1"/>
<TextBlock Canvas.Left="135" Canvas.Top="15" Text="40" FontSize="10"/>
<!-- 30 --> <!-- 35 -->
<Line X1="40" Y1="70" X2="130" Y2="70" Stroke="Black" StrokeThickness="1"/> <Line X1="40" Y1="45" X2="130" Y2="45" Stroke="Black" StrokeThickness="1"/>
<TextBlock Canvas.Left="135" Canvas.Top="65" Text="30" FontSize="10"/> <TextBlock Canvas.Left="135" Canvas.Top="40" Text="35" FontSize="10"/>
<!-- 25 --> <!-- 30 -->
<Line X1="40" Y1="95" X2="130" Y2="95" Stroke="Black" StrokeThickness="1"/> <Line X1="40" Y1="70" X2="130" Y2="70" Stroke="Black" StrokeThickness="1"/>
<TextBlock Canvas.Left="135" Canvas.Top="90" Text="25" FontSize="10"/> <TextBlock Canvas.Left="135" Canvas.Top="65" Text="30" FontSize="10"/>
<!-- 20 --> <!-- 25 -->
<Line X1="40" Y1="120" X2="130" Y2="120" Stroke="Black" StrokeThickness="1"/> <Line X1="40" Y1="95" X2="130" Y2="95" Stroke="Black" StrokeThickness="1"/>
<TextBlock Canvas.Left="135" Canvas.Top="115" Text="20" FontSize="10"/> <TextBlock Canvas.Left="135" Canvas.Top="90" Text="25" FontSize="10"/>
<!-- 15 --> <!-- 20 -->
<Line X1="40" Y1="145" X2="130" Y2="145" Stroke="Black" StrokeThickness="1"/> <Line X1="40" Y1="120" X2="130" Y2="120" Stroke="Black" StrokeThickness="1"/>
<TextBlock Canvas.Left="135" Canvas.Top="140" Text="15" FontSize="10"/> <TextBlock Canvas.Left="135" Canvas.Top="115" Text="20" FontSize="10"/>
<!-- 10 --> <!-- 15 -->
<Line X1="40" Y1="170" X2="130" Y2="170" Stroke="Black" StrokeThickness="1"/> <Line X1="40" Y1="145" X2="130" Y2="145" Stroke="Black" StrokeThickness="1"/>
<TextBlock Canvas.Left="135" Canvas.Top="165" Text="10" FontSize="10"/> <TextBlock Canvas.Left="135" Canvas.Top="140" Text="15" FontSize="10"/>
<!-- 5 --> <!-- 10 -->
<Line X1="40" Y1="195" X2="130" Y2="195" Stroke="Black" StrokeThickness="1"/> <Line X1="40" Y1="170" X2="130" Y2="170" Stroke="Black" StrokeThickness="1"/>
<TextBlock Canvas.Left="135" Canvas.Top="190" Text="5" FontSize="10"/> <TextBlock Canvas.Left="135" Canvas.Top="165" Text="10" FontSize="10"/>
<!-- 0 --> <!-- 5 -->
<Line X1="40" Y1="220" X2="130" Y2="220" Stroke="Black" StrokeThickness="1"/> <Line X1="40" Y1="195" X2="130" Y2="195" Stroke="Black" StrokeThickness="1"/>
<TextBlock Canvas.Left="135" Canvas.Top="215" Text="0" FontSize="10"/> <TextBlock Canvas.Left="135" Canvas.Top="190" Text="5" FontSize="10"/>
<!-- -5 --> <!-- 0 -->
<Line X1="40" Y1="245" X2="130" Y2="245" Stroke="Black" StrokeThickness="1"/> <Line X1="40" Y1="220" X2="130" Y2="220" Stroke="Black" StrokeThickness="1"/>
<TextBlock Canvas.Left="135" Canvas.Top="240" Text="-5" FontSize="10"/> <TextBlock Canvas.Left="135" Canvas.Top="215" Text="0" FontSize="10"/>
<!-- -10 --> <!-- -5 -->
<Line X1="40" Y1="270" X2="130" Y2="270" Stroke="Black" StrokeThickness="1"/> <Line X1="40" Y1="245" X2="130" Y2="245" Stroke="Black" StrokeThickness="1"/>
<TextBlock Canvas.Left="135" Canvas.Top="265" Text="-10" FontSize="10"/> <TextBlock Canvas.Left="135" Canvas.Top="240" Text="-5" FontSize="10"/>
<!-- -15 --> <!-- -10 -->
<Line X1="40" Y1="295" X2="130" Y2="295" Stroke="Black" StrokeThickness="1"/> <Line X1="40" Y1="270" X2="130" Y2="270" Stroke="Black" StrokeThickness="1"/>
<TextBlock Canvas.Left="135" Canvas.Top="290" Text="-15" FontSize="10"/> <TextBlock Canvas.Left="135" Canvas.Top="265" Text="-10" FontSize="10"/>
<!-- -20 --> <!-- -15 -->
<Line X1="40" Y1="320" X2="130" Y2="320" Stroke="Black" StrokeThickness="1"/> <Line X1="40" Y1="295" X2="130" Y2="295" Stroke="Black" StrokeThickness="1"/>
<TextBlock Canvas.Left="135" Canvas.Top="315" Text="-20" FontSize="10"/> <TextBlock Canvas.Left="135" Canvas.Top="290" Text="-15" FontSize="10"/>
<!-- -25 --> <!-- -20 -->
<Line X1="40" Y1="345" X2="130" Y2="345" Stroke="Black" StrokeThickness="1"/> <Line X1="40" Y1="320" X2="130" Y2="320" Stroke="Black" StrokeThickness="1"/>
<TextBlock Canvas.Left="135" Canvas.Top="340" Text="-25" FontSize="10"/> <TextBlock Canvas.Left="135" Canvas.Top="315" Text="-20" FontSize="10"/>
<!-- -30 --> <!-- -25 -->
<Line X1="40" Y1="370" X2="130" Y2="370" Stroke="Black" StrokeThickness="1"/> <Line X1="40" Y1="345" X2="130" Y2="345" Stroke="Black" StrokeThickness="1"/>
<TextBlock Canvas.Left="135" Canvas.Top="365" Text="-30" FontSize="10"/> <TextBlock Canvas.Left="135" Canvas.Top="340" Text="-25" FontSize="10"/>
<!-- -35 --> <!-- -30 -->
<Line X1="40" Y1="395" X2="130" Y2="395" Stroke="Black" StrokeThickness="1"/> <Line X1="40" Y1="370" X2="130" Y2="370" Stroke="Black" StrokeThickness="1"/>
<TextBlock Canvas.Left="135" Canvas.Top="390" Text="-35" FontSize="10"/> <TextBlock Canvas.Left="135" Canvas.Top="365" Text="-30" FontSize="10"/>
<!-- -40 --> <!-- -35 -->
<Line X1="120" Y1="420" X2="130" Y2="420" Stroke="Black" StrokeThickness="1"/> <Line X1="40" Y1="395" X2="130" Y2="395" Stroke="Black" StrokeThickness="1"/>
<TextBlock Canvas.Left="135" Canvas.Top="415" Text="-40" FontSize="10"/> <TextBlock Canvas.Left="135" Canvas.Top="390" Text="-35" FontSize="10"/>
<!-- 小刻度线 - 每个大刻度之间3个小刻度 --> <!-- -40 -->
<!-- 40到35之间的小刻度 --> <Line X1="120" Y1="420" X2="130" Y2="420" Stroke="Black" StrokeThickness="1"/>
<Line X1="40" Y1="26.25" X2="125" Y2="26.25" Stroke="Black" StrokeThickness="0.5"/> <TextBlock Canvas.Left="135" Canvas.Top="415" Text="-40" FontSize="10"/>
<Line X1="40" Y1="32.5" X2="125" Y2="32.5" Stroke="Black" StrokeThickness="0.5"/>
<Line X1="40" Y1="38.75" X2="125" Y2="38.75" Stroke="Black" StrokeThickness="0.5"/>
<!-- 35到30之间的小刻度 --> <!-- 小刻度线 - 每个大刻度之间3个小刻度 -->
<Line X1="40" Y1="51.25" X2="125" Y2="51.25" Stroke="Black" StrokeThickness="0.5"/> <!-- 40到35之间的小刻度 -->
<Line X1="40" Y1="57.5" X2="125" Y2="57.5" Stroke="Black" StrokeThickness="0.5"/> <Line X1="40" Y1="26.25" X2="125" Y2="26.25" Stroke="Black" StrokeThickness="0.5"/>
<Line X1="40" Y1="63.75" X2="125" Y2="63.75" Stroke="Black" StrokeThickness="0.5"/> <Line X1="40" Y1="32.5" X2="125" Y2="32.5" Stroke="Black" StrokeThickness="0.5"/>
<Line X1="40" Y1="38.75" X2="125" Y2="38.75" Stroke="Black" StrokeThickness="0.5"/>
<!-- 30到25之间的小刻度 --> <!-- 35到30之间的小刻度 -->
<Line X1="40" Y1="76.25" X2="125" Y2="76.25" Stroke="Black" StrokeThickness="0.5"/> <Line X1="40" Y1="51.25" X2="125" Y2="51.25" Stroke="Black" StrokeThickness="0.5"/>
<Line X1="40" Y1="82.5" X2="125" Y2="82.5" Stroke="Black" StrokeThickness="0.5"/> <Line X1="40" Y1="57.5" X2="125" Y2="57.5" Stroke="Black" StrokeThickness="0.5"/>
<Line X1="40" Y1="88.75" X2="125" Y2="88.75" Stroke="Black" StrokeThickness="0.5"/> <Line X1="40" Y1="63.75" X2="125" Y2="63.75" Stroke="Black" StrokeThickness="0.5"/>
<!-- 25到20之间的小刻度 --> <!-- 30到25之间的小刻度 -->
<Line X1="40" Y1="101.25" X2="125" Y2="101.25" Stroke="Black" StrokeThickness="0.5"/> <Line X1="40" Y1="76.25" X2="125" Y2="76.25" Stroke="Black" StrokeThickness="0.5"/>
<Line X1="40" Y1="107.5" X2="125" Y2="107.5" Stroke="Black" StrokeThickness="0.5"/> <Line X1="40" Y1="82.5" X2="125" Y2="82.5" Stroke="Black" StrokeThickness="0.5"/>
<Line X1="40" Y1="113.75" X2="125" Y2="113.75" Stroke="Black" StrokeThickness="0.5"/> <Line X1="40" Y1="88.75" X2="125" Y2="88.75" Stroke="Black" StrokeThickness="0.5"/>
<!-- 20到15之间的小刻度 --> <!-- 25到20之间的小刻度 -->
<Line X1="40" Y1="126.25" X2="125" Y2="126.25" Stroke="Black" StrokeThickness="0.5"/> <Line X1="40" Y1="101.25" X2="125" Y2="101.25" Stroke="Black" StrokeThickness="0.5"/>
<Line X1="40" Y1="132.5" X2="125" Y2="132.5" Stroke="Black" StrokeThickness="0.5"/> <Line X1="40" Y1="107.5" X2="125" Y2="107.5" Stroke="Black" StrokeThickness="0.5"/>
<Line X1="40" Y1="138.75" X2="125" Y2="138.75" Stroke="Black" StrokeThickness="0.5"/> <Line X1="40" Y1="113.75" X2="125" Y2="113.75" Stroke="Black" StrokeThickness="0.5"/>
<!-- 15到10之间的小刻度 --> <!-- 20到15之间的小刻度 -->
<Line X1="40" Y1="151.25" X2="125" Y2="151.25" Stroke="Black" StrokeThickness="0.5"/> <Line X1="40" Y1="126.25" X2="125" Y2="126.25" Stroke="Black" StrokeThickness="0.5"/>
<Line X1="40" Y1="157.5" X2="125" Y2="157.5" Stroke="Black" StrokeThickness="0.5"/> <Line X1="40" Y1="132.5" X2="125" Y2="132.5" Stroke="Black" StrokeThickness="0.5"/>
<Line X1="40" Y1="163.75" X2="125" Y2="163.75" Stroke="Black" StrokeThickness="0.5"/> <Line X1="40" Y1="138.75" X2="125" Y2="138.75" Stroke="Black" StrokeThickness="0.5"/>
<!-- 10到5之间的小刻度 --> <!-- 15到10之间的小刻度 -->
<Line X1="40" Y1="176.25" X2="125" Y2="176.25" Stroke="Black" StrokeThickness="0.5"/> <Line X1="40" Y1="151.25" X2="125" Y2="151.25" Stroke="Black" StrokeThickness="0.5"/>
<Line X1="40" Y1="182.5" X2="125" Y2="182.5" Stroke="Black" StrokeThickness="0.5"/> <Line X1="40" Y1="157.5" X2="125" Y2="157.5" Stroke="Black" StrokeThickness="0.5"/>
<Line X1="40" Y1="188.75" X2="125" Y2="188.75" Stroke="Black" StrokeThickness="0.5"/> <Line X1="40" Y1="163.75" X2="125" Y2="163.75" Stroke="Black" StrokeThickness="0.5"/>
<!-- 5到0之间的小刻度 --> <!-- 10到5之间的小刻度 -->
<Line X1="40" Y1="201.25" X2="125" Y2="201.25" Stroke="Black" StrokeThickness="0.5"/> <Line X1="40" Y1="176.25" X2="125" Y2="176.25" Stroke="Black" StrokeThickness="0.5"/>
<Line X1="40" Y1="207.5" X2="125" Y2="207.5" Stroke="Black" StrokeThickness="0.5"/> <Line X1="40" Y1="182.5" X2="125" Y2="182.5" Stroke="Black" StrokeThickness="0.5"/>
<Line X1="40" Y1="213.75" X2="125" Y2="213.75" Stroke="Black" StrokeThickness="0.5"/> <Line X1="40" Y1="188.75" X2="125" Y2="188.75" Stroke="Black" StrokeThickness="0.5"/>
<!-- 0到-5之间的小刻度 --> <!-- 5到0之间的小刻度 -->
<Line X1="40" Y1="226.25" X2="125" Y2="226.25" Stroke="Black" StrokeThickness="0.5"/> <Line X1="40" Y1="201.25" X2="125" Y2="201.25" Stroke="Black" StrokeThickness="0.5"/>
<Line X1="40" Y1="232.5" X2="125" Y2="232.5" Stroke="Black" StrokeThickness="0.5"/> <Line X1="40" Y1="207.5" X2="125" Y2="207.5" Stroke="Black" StrokeThickness="0.5"/>
<Line X1="40" Y1="238.75" X2="125" Y2="238.75" Stroke="Black" StrokeThickness="0.5"/> <Line X1="40" Y1="213.75" X2="125" Y2="213.75" Stroke="Black" StrokeThickness="0.5"/>
<!-- -5到-10之间的小刻度 --> <!-- 0到-5之间的小刻度 -->
<Line X1="40" Y1="251.25" X2="125" Y2="251.25" Stroke="Black" StrokeThickness="0.5"/> <Line X1="40" Y1="226.25" X2="125" Y2="226.25" Stroke="Black" StrokeThickness="0.5"/>
<Line X1="40" Y1="257.5" X2="125" Y2="257.5" Stroke="Black" StrokeThickness="0.5"/> <Line X1="40" Y1="232.5" X2="125" Y2="232.5" Stroke="Black" StrokeThickness="0.5"/>
<Line X1="40" Y1="263.75" X2="125" Y2="263.75" Stroke="Black" StrokeThickness="0.5"/> <Line X1="40" Y1="238.75" X2="125" Y2="238.75" Stroke="Black" StrokeThickness="0.5"/>
<!-- -10到-15之间的小刻度 --> <!-- -5到-10之间的小刻度 -->
<Line X1="40" Y1="276.25" X2="125" Y2="276.25" Stroke="Black" StrokeThickness="0.5"/> <Line X1="40" Y1="251.25" X2="125" Y2="251.25" Stroke="Black" StrokeThickness="0.5"/>
<Line X1="40" Y1="282.5" X2="125" Y2="282.5" Stroke="Black" StrokeThickness="0.5"/> <Line X1="40" Y1="257.5" X2="125" Y2="257.5" Stroke="Black" StrokeThickness="0.5"/>
<Line X1="40" Y1="288.75" X2="125" Y2="288.75" Stroke="Black" StrokeThickness="0.5"/> <Line X1="40" Y1="263.75" X2="125" Y2="263.75" Stroke="Black" StrokeThickness="0.5"/>
<!-- -15到-20之间的小刻度 --> <!-- -10到-15之间的小刻度 -->
<Line X1="40" Y1="301.25" X2="125" Y2="301.25" Stroke="Black" StrokeThickness="0.5"/> <Line X1="40" Y1="276.25" X2="125" Y2="276.25" Stroke="Black" StrokeThickness="0.5"/>
<Line X1="40" Y1="307.5" X2="125" Y2="307.5" Stroke="Black" StrokeThickness="0.5"/> <Line X1="40" Y1="282.5" X2="125" Y2="282.5" Stroke="Black" StrokeThickness="0.5"/>
<Line X1="40" Y1="313.75" X2="125" Y2="313.75" Stroke="Black" StrokeThickness="0.5"/> <Line X1="40" Y1="288.75" X2="125" Y2="288.75" Stroke="Black" StrokeThickness="0.5"/>
<!-- -20到-25之间的小刻度 --> <!-- -15到-20之间的小刻度 -->
<Line X1="40" Y1="326.25" X2="125" Y2="326.25" Stroke="Black" StrokeThickness="0.5"/> <Line X1="40" Y1="301.25" X2="125" Y2="301.25" Stroke="Black" StrokeThickness="0.5"/>
<Line X1="40" Y1="332.5" X2="125" Y2="332.5" Stroke="Black" StrokeThickness="0.5"/> <Line X1="40" Y1="307.5" X2="125" Y2="307.5" Stroke="Black" StrokeThickness="0.5"/>
<Line X1="40" Y1="338.75" X2="125" Y2="338.75" Stroke="Black" StrokeThickness="0.5"/> <Line X1="40" Y1="313.75" X2="125" Y2="313.75" Stroke="Black" StrokeThickness="0.5"/>
<!-- -25到-30之间的小刻度 --> <!-- -20到-25之间的小刻度 -->
<Line X1="40" Y1="351.25" X2="125" Y2="351.25" Stroke="Black" StrokeThickness="0.5"/> <Line X1="40" Y1="326.25" X2="125" Y2="326.25" Stroke="Black" StrokeThickness="0.5"/>
<Line X1="40" Y1="357.5" X2="125" Y2="357.5" Stroke="Black" StrokeThickness="0.5"/> <Line X1="40" Y1="332.5" X2="125" Y2="332.5" Stroke="Black" StrokeThickness="0.5"/>
<Line X1="40" Y1="363.75" X2="125" Y2="363.75" Stroke="Black" StrokeThickness="0.5"/> <Line X1="40" Y1="338.75" X2="125" Y2="338.75" Stroke="Black" StrokeThickness="0.5"/>
<!-- -30到-35之间的小刻度 --> <!-- -25到-30之间的小刻度 -->
<Line X1="40" Y1="376.25" X2="125" Y2="376.25" Stroke="Black" StrokeThickness="0.5"/> <Line X1="40" Y1="351.25" X2="125" Y2="351.25" Stroke="Black" StrokeThickness="0.5"/>
<Line X1="40" Y1="382.5" X2="125" Y2="382.5" Stroke="Black" StrokeThickness="0.5"/> <Line X1="40" Y1="357.5" X2="125" Y2="357.5" Stroke="Black" StrokeThickness="0.5"/>
<Line X1="40" Y1="388.75" X2="125" Y2="388.75" Stroke="Black" StrokeThickness="0.5"/> <Line X1="40" Y1="363.75" X2="125" Y2="363.75" Stroke="Black" StrokeThickness="0.5"/>
<!-- -35到-40之间的小刻度 --> <!-- -30到-35之间的小刻度 -->
<Line X1="40" Y1="401.25" X2="125" Y2="401.25" Stroke="Black" StrokeThickness="0.5"/> <Line X1="40" Y1="376.25" X2="125" Y2="376.25" Stroke="Black" StrokeThickness="0.5"/>
<Line X1="40" Y1="407.5" X2="125" Y2="407.5" Stroke="Black" StrokeThickness="0.5"/> <Line X1="40" Y1="382.5" X2="125" Y2="382.5" Stroke="Black" StrokeThickness="0.5"/>
<Line X1="40" Y1="413.75" X2="125" Y2="413.75" Stroke="Black" StrokeThickness="0.5"/> <Line X1="40" Y1="388.75" X2="125" Y2="388.75" Stroke="Black" StrokeThickness="0.5"/>
<!-- 柱状图数据 - 紧贴左右边界 --> <!-- -35到-40之间的小刻度 -->
<Rectangle Name="DataBar" <Line X1="40" Y1="401.25" X2="125" Y2="401.25" Stroke="Black" StrokeThickness="0.5"/>
Canvas.Left="40" <Line X1="40" Y1="407.5" X2="125" Y2="407.5" Stroke="Black" StrokeThickness="0.5"/>
Canvas.Top="{Binding BarTop, RelativeSource={RelativeSource AncestorType=UserControl}}" <Line X1="40" Y1="413.75" X2="125" Y2="413.75" Stroke="Black" StrokeThickness="0.5"/>
Width="80"
Height="{Binding BarHeight, RelativeSource={RelativeSource AncestorType=UserControl}}"
Fill="Blue"
Opacity="0.7"/>
<!-- 红色标记线 --> <!-- 柱状图数据 - 紧贴左右边界 -->
<ItemsControl Name="RedLines" ItemsSource="{Binding RedLinePositions, RelativeSource={RelativeSource AncestorType=UserControl}}"> <Rectangle Name="DataBar"
<ItemsControl.ItemsPanel> Canvas.Left="40"
<ItemsPanelTemplate> Canvas.Top="{Binding BarTop, RelativeSource={RelativeSource AncestorType=UserControl}}"
<Canvas/> Width="80"
</ItemsPanelTemplate> Height="{Binding BarHeight, RelativeSource={RelativeSource AncestorType=UserControl}}"
</ItemsControl.ItemsPanel> Fill="Blue"
<ItemsControl.ItemTemplate> Opacity="0.7"/>
<DataTemplate>
<Line X1="40" Y1="{Binding}" X2="120" Y2="{Binding}" Stroke="Red" StrokeThickness="2"/> <!-- 红色标记线 -->
</DataTemplate> <ItemsControl Name="RedLines" ItemsSource="{Binding RedLinePositions, RelativeSource={RelativeSource AncestorType=UserControl}}">
</ItemsControl.ItemTemplate> <ItemsControl.ItemsPanel>
<ItemsControl.ItemContainerStyle> <ItemsPanelTemplate>
<Style TargetType="ContentPresenter"> <Canvas/>
<Setter Property="Canvas.Top" Value="0"/> </ItemsPanelTemplate>
<Setter Property="Canvas.Left" Value="0"/> </ItemsControl.ItemsPanel>
</Style> <ItemsControl.ItemTemplate>
</ItemsControl.ItemContainerStyle> <DataTemplate>
</ItemsControl> <Line X1="40" Y1="{Binding}" X2="120" Y2="{Binding}" Stroke="Red" StrokeThickness="2"/>
</Canvas> </DataTemplate>
</ItemsControl.ItemTemplate>
<ItemsControl.ItemContainerStyle>
<Style TargetType="ContentPresenter">
<Setter Property="Canvas.Top" Value="0"/>
<Setter Property="Canvas.Left" Value="0"/>
</Style>
</ItemsControl.ItemContainerStyle>
</ItemsControl>
</Canvas>
</Viewbox>
</Grid> </Grid>
</Border> </Border>
</UserControl> </UserControl>