This commit is contained in:
GukSang.Jin
2026-04-01 19:22:59 +08:00
parent cbeb894a79
commit d1bf076c0e
2 changed files with 47 additions and 61 deletions

View File

@@ -1203,37 +1203,10 @@
<Border Grid.Row="0" BorderBrush="#FFE0EAEE" BorderThickness="0,0,0,1" />
<Border Grid.Row="1" BorderBrush="#FFE0EAEE" BorderThickness="0,0,0,1" />
<Border Grid.Row="2" BorderBrush="#FFE0EAEE" BorderThickness="0,0,0,1" />
<Canvas>
<Polyline Stroke="#FF0B7A75" StrokeThickness="2">
<Polyline.Points>
<MultiBinding Converter="{StaticResource TrendPointCollectionConverter}">
<Binding Path="ProximalPressureTrendValues" />
<Binding RelativeSource="{RelativeSource AncestorType=Canvas}" Path="ActualWidth" />
<Binding RelativeSource="{RelativeSource AncestorType=Canvas}" Path="ActualHeight" />
<Binding Path="PressureTrendMax" />
</MultiBinding>
</Polyline.Points>
</Polyline>
<Polyline Stroke="#FF3C6FB6" StrokeThickness="2">
<Polyline.Points>
<MultiBinding Converter="{StaticResource TrendPointCollectionConverter}">
<Binding Path="DistalPressureTrendValues" />
<Binding RelativeSource="{RelativeSource AncestorType=Canvas}" Path="ActualWidth" />
<Binding RelativeSource="{RelativeSource AncestorType=Canvas}" Path="ActualHeight" />
<Binding Path="PressureTrendMax" />
</MultiBinding>
</Polyline.Points>
</Polyline>
<Polyline Stroke="#FFD38A16" StrokeThickness="2">
<Polyline.Points>
<MultiBinding Converter="{StaticResource TrendPointCollectionConverter}">
<Binding Path="DeltaPressureTrendValues" />
<Binding RelativeSource="{RelativeSource AncestorType=Canvas}" Path="ActualWidth" />
<Binding RelativeSource="{RelativeSource AncestorType=Canvas}" Path="ActualHeight" />
<Binding Path="PressureTrendMax" />
</MultiBinding>
</Polyline.Points>
</Polyline>
<Canvas x:Name="PressureTrendCanvas">
<Polyline x:Name="ProximalPressureTrendPolyline" Stroke="#FF0B7A75" StrokeThickness="2" />
<Polyline x:Name="DistalPressureTrendPolyline" Stroke="#FF3C6FB6" StrokeThickness="2" />
<Polyline x:Name="DeltaPressureTrendPolyline" Stroke="#FFD38A16" StrokeThickness="2" />
</Canvas>
</Grid>
</StackPanel>
@@ -1305,18 +1278,9 @@
<Border Grid.Row="0" BorderBrush="#FFE0EAEE" BorderThickness="0,0,0,1" />
<Border Grid.Row="1" BorderBrush="#FFE0EAEE" BorderThickness="0,0,0,1" />
<Border Grid.Row="2" BorderBrush="#FFE0EAEE" BorderThickness="0,0,0,1" />
<Canvas>
<Polyline Stroke="#FF0B7A75" StrokeThickness="2">
<Polyline.Points>
<MultiBinding Converter="{StaticResource TrendPointCollectionConverter}">
<Binding Path="ActiveFlowTrendPrimaryValues" />
<Binding RelativeSource="{RelativeSource AncestorType=Canvas}" Path="ActualWidth" />
<Binding RelativeSource="{RelativeSource AncestorType=Canvas}" Path="ActualHeight" />
<Binding Path="FlowTrendMax" />
</MultiBinding>
</Polyline.Points>
</Polyline>
<Polyline Stroke="#FF3C6FB6" StrokeThickness="2">
<Canvas x:Name="FlowTrendCanvas">
<Polyline x:Name="FlowTrendPrimaryPolyline" Stroke="#FF0B7A75" StrokeThickness="2" />
<Polyline x:Name="FlowTrendSecondaryPolyline" Stroke="#FF3C6FB6" StrokeThickness="2">
<Polyline.Style>
<Style TargetType="Polyline">
<Setter Property="Visibility" Value="Collapsed" />
@@ -1327,16 +1291,8 @@
</Style.Triggers>
</Style>
</Polyline.Style>
<Polyline.Points>
<MultiBinding Converter="{StaticResource TrendPointCollectionConverter}">
<Binding Path="ActiveFlowTrendSecondaryValues" />
<Binding RelativeSource="{RelativeSource AncestorType=Canvas}" Path="ActualWidth" />
<Binding RelativeSource="{RelativeSource AncestorType=Canvas}" Path="ActualHeight" />
<Binding Path="FlowTrendMax" />
</MultiBinding>
</Polyline.Points>
</Polyline>
<Polyline Stroke="#FFD38A16" StrokeThickness="2">
<Polyline x:Name="FlowTrendTertiaryPolyline" Stroke="#FFD38A16" StrokeThickness="2">
<Polyline.Style>
<Style TargetType="Polyline">
<Setter Property="Visibility" Value="Collapsed" />
@@ -1347,14 +1303,6 @@
</Style.Triggers>
</Style>
</Polyline.Style>
<Polyline.Points>
<MultiBinding Converter="{StaticResource TrendPointCollectionConverter}">
<Binding Path="ActiveFlowTrendTertiaryValues" />
<Binding RelativeSource="{RelativeSource AncestorType=Canvas}" Path="ActualWidth" />
<Binding RelativeSource="{RelativeSource AncestorType=Canvas}" Path="ActualHeight" />
<Binding Path="FlowTrendMax" />
</MultiBinding>
</Polyline.Points>
</Polyline>
</Canvas>
</Grid>

View File

@@ -1,4 +1,8 @@
using System.Windows;
using System.Globalization;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Shapes;
using Cardiopulmonarybypasssystems.ViewModels;
namespace Cardiopulmonarybypasssystems;
@@ -9,5 +13,39 @@ public partial class MainWindow : Window
{
InitializeComponent();
DataContext = viewModel;
ConfigureTrendBindings();
}
private void ConfigureTrendBindings()
{
var converter = (IMultiValueConverter)Resources["TrendPointCollectionConverter"];
BindTrendPolyline(ProximalPressureTrendPolyline, PressureTrendCanvas, converter, "ProximalPressureTrendValues", "PressureTrendMax");
BindTrendPolyline(DistalPressureTrendPolyline, PressureTrendCanvas, converter, "DistalPressureTrendValues", "PressureTrendMax");
BindTrendPolyline(DeltaPressureTrendPolyline, PressureTrendCanvas, converter, "DeltaPressureTrendValues", "PressureTrendMax");
BindTrendPolyline(FlowTrendPrimaryPolyline, FlowTrendCanvas, converter, "ActiveFlowTrendPrimaryValues", "FlowTrendMax");
BindTrendPolyline(FlowTrendSecondaryPolyline, FlowTrendCanvas, converter, "ActiveFlowTrendSecondaryValues", "FlowTrendMax");
BindTrendPolyline(FlowTrendTertiaryPolyline, FlowTrendCanvas, converter, "ActiveFlowTrendTertiaryValues", "FlowTrendMax");
}
private static void BindTrendPolyline(
Polyline polyline,
Canvas canvas,
IMultiValueConverter converter,
string valuesPath,
string maxPath)
{
var binding = new MultiBinding
{
Converter = converter,
ConverterCulture = CultureInfo.CurrentCulture
};
binding.Bindings.Add(new Binding(valuesPath));
binding.Bindings.Add(new Binding(nameof(ActualWidth)) { Source = canvas });
binding.Bindings.Add(new Binding(nameof(ActualHeight)) { Source = canvas });
binding.Bindings.Add(new Binding(maxPath));
BindingOperations.SetBinding(polyline, Polyline.PointsProperty, binding);
}
}