[UI.Client]

修改Recipe同时滚动,数据显示问题
This commit is contained in:
hanqiangqiang 2023-10-02 15:14:23 +08:00
parent 3e4b04b23f
commit 378ce6a781
4 changed files with 55 additions and 20 deletions

View File

@ -36,6 +36,17 @@ namespace MECF.Framework.UI.Client.CenterViews.Editors.Recipe
public ObservableCollection<string> Chambers { get; set; }
private RecipeData _recipeHeaders;
public RecipeData RecipeHeaders
{
get => _recipeHeaders;
set
{
_recipeHeaders = value;
NotifyOfPropertyChange();
}
}
private RecipeData _currentRecipe;
public RecipeData CurrentRecipe
{
@ -327,8 +338,6 @@ namespace MECF.Framework.UI.Client.CenterViews.Editors.Recipe
var recipeData2 = new RecipeData(CurrentProcessType);
recipeData2.BuildFormat($"{CurrentChamberType}\\{CurrentProcessType}", SelectedChamber, BaseApp.Instance.UserContext.RoleName);
@ -398,10 +407,18 @@ namespace MECF.Framework.UI.Client.CenterViews.Editors.Recipe
public void Start(RecipeData recipeData1, RecipeData recipeData2)
{
RecipeStep v = CurrentRecipe.Steps[3];
int stepsCount = recipeData1.Steps.Count <= recipeData2.Steps.Count ? recipeData1.Steps.Count : recipeData2.Steps.Count;
int stepsCount = 0;
RecipeData recipeDataExcess;
if (recipeData1.Steps.Count <= recipeData2.Steps.Count)
{
stepsCount=recipeData1.Steps.Count;
recipeDataExcess=recipeData2;
}
else
{
stepsCount = recipeData2.Steps.Count;
recipeDataExcess = recipeData1;
}
for (int i = 0; i < stepsCount; i++)
{
@ -424,6 +441,15 @@ namespace MECF.Framework.UI.Client.CenterViews.Editors.Recipe
}
}
//步数多余部分高亮显示
for (int i = stepsCount +1 ; i < recipeDataExcess.Steps.Count; i++)
{
for (int j = 0; j < recipeDataExcess.Steps[i].Count; j++)
{
recipeDataExcess.Steps[i][j].Highlight();
}
}
}
private object GetValue(Param param)

View File

@ -168,22 +168,21 @@
<ColumnDefinition />
<ColumnDefinition />
</Grid.ColumnDefinitions>
<dgExtension1:DataGridRecipe
x:Name="dgCustom"
AllowDragToFill="False"
FrozenColumnCount="6"
IsEnabled="{Binding IsPermission}"
Recipe="{Binding CurrentRecipe, Mode=OneWay}"
Recipe="{Binding CurrentRecipe, Mode=OneWay}"
ScrollviewerPositionOffset="{Binding ScrollviewerPositionOffset2, UpdateSourceTrigger=PropertyChanged, Mode=TwoWay}" />
<dgExtension1:DataGridRecipe
x:Name="dgCustom2"
Grid.Column="1"
AllowDragToFill="False"
FrozenColumnCount="6"
ComperHeadersVisibility="Row"
IsEnabled="{Binding IsPermission}"
Recipe="{Binding CurrentRecipe2, Mode=OneWay}"
Recipe="{Binding CurrentRecipe2, Mode=OneWay}"
ScrollviewerPositionOffset="{Binding ScrollviewerPositionOffset2, UpdateSourceTrigger=PropertyChanged, Mode=TwoWay}" />
</Grid>

View File

@ -613,7 +613,7 @@
CellEditEnding="DgCustom_OnCellEditEnding"
DragToFillAdornerColorBrush="{StaticResource DragToFillFrameColor}"
DragToFillAdornerThumbStyle="{StaticResource DragToFillThumbStyle}"
HeadersVisibility="{Binding RelativeSource={RelativeSource Mode=FindAncestor,AncestorType=UserControl},Path=ComperHeadersVisibility}"
HeadersVisibility="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=UserControl}, Path=ComperHeadersVisibility}"
LoadingRow="DgCustom_OnLoadingRow"
ScrollViewer.ScrollChanged="dgCustom_ScrollChanged"
Style="{StaticResource RecipeEditorDataGrid}"

View File

@ -28,6 +28,22 @@ namespace MECF.Framework.UI.Client.RecipeEditorLib.DGExtension
InitializeComponent();
}
private void dgCustom_ScrollChanged(object sender, ScrollChangedEventArgs e)
{
if (scroll==null)
scroll = (ScrollViewer)e.OriginalSource;
if (ScrollviewerPositionOffset == null)
ScrollviewerPositionOffset=new double[2];
var _verticalOffset = ScrollviewerPositionOffset[0] <= scroll.ScrollableHeight? scroll.VerticalOffset : ScrollviewerPositionOffset[0];
var _horizontalOffset= ScrollviewerPositionOffset[1] <= scroll.ScrollableWidth ? scroll.HorizontalOffset: ScrollviewerPositionOffset[1];
ScrollviewerPositionOffset = new double[] { _verticalOffset, _horizontalOffset };
}
#endregion
#region Properties
@ -55,7 +71,7 @@ namespace MECF.Framework.UI.Client.RecipeEditorLib.DGExtension
// Using a DependencyProperty as the backing store for ScrollviewerPositionOffset. This enables animation, styling, binding, etc...
public static readonly DependencyProperty ScrollviewerPositionOffsetProperty =
DependencyProperty.Register("ScrollviewerPositionOffset", typeof(double[]), typeof(DataGridRecipe), new PropertyMetadata(default, ScrollviewerPositionOffsetPropertyChangedCallback));
DependencyProperty.Register("ScrollviewerPositionOffset", typeof(double[]), typeof(DataGridRecipe), new PropertyMetadata(new double[2], ScrollviewerPositionOffsetPropertyChangedCallback));
#region RecipeData
@ -81,8 +97,8 @@ namespace MECF.Framework.UI.Client.RecipeEditorLib.DGExtension
if (self.scroll != null)
{
var _scOffset = (double[])e.NewValue;
self.scroll.ScrollToVerticalOffset(_scOffset[0] <= self.scroll.MaxWidth ? _scOffset[0] : self.scroll.MaxWidth);
self.scroll.ScrollToHorizontalOffset(_scOffset[1] <= self.scroll.MaxHeight ? _scOffset[1] : self.scroll.MaxHeight);
self.scroll.ScrollToVerticalOffset(_scOffset[0] <= self.scroll.ScrollableHeight ? _scOffset[0] : self.scroll.ScrollableHeight);
self.scroll.ScrollToHorizontalOffset(_scOffset[1] <= self.scroll.ScrollableWidth ? _scOffset[1] : self.scroll.ScrollableWidth);
}
}
@ -347,11 +363,5 @@ namespace MECF.Framework.UI.Client.RecipeEditorLib.DGExtension
}
#endregion
private void dgCustom_ScrollChanged(object sender, ScrollChangedEventArgs e)
{
scroll = (ScrollViewer)e.OriginalSource;
ScrollviewerPositionOffset = new double[] { scroll.VerticalOffset, scroll.HorizontalOffset };
}
}
}