Fix performance issue
This commit is contained in:
parent
38053666a0
commit
f6969a0204
|
@ -1,27 +0,0 @@
|
||||||
using System;
|
|
||||||
using System.Globalization;
|
|
||||||
using System.Windows;
|
|
||||||
using System.Windows.Data;
|
|
||||||
|
|
||||||
namespace Filtration.Converters
|
|
||||||
{
|
|
||||||
public class BooleanToBlockMarginConverter : IValueConverter
|
|
||||||
{
|
|
||||||
public double Length { get; set; }
|
|
||||||
|
|
||||||
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
|
|
||||||
{
|
|
||||||
var item = (bool)value;
|
|
||||||
|
|
||||||
if (!item)
|
|
||||||
return new Thickness(2, 0, 2, 0);
|
|
||||||
|
|
||||||
return new Thickness(2, 2, 2, 2);
|
|
||||||
}
|
|
||||||
|
|
||||||
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
|
|
||||||
{
|
|
||||||
return ((Thickness)value) == new Thickness(0, 0, 0, 0);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -167,7 +167,6 @@
|
||||||
<Compile Include="Converters\BooleanToBlockActionInverseConverter.cs" />
|
<Compile Include="Converters\BooleanToBlockActionInverseConverter.cs" />
|
||||||
<Compile Include="Converters\BooleanToBlockActionConverter.cs" />
|
<Compile Include="Converters\BooleanToBlockActionConverter.cs" />
|
||||||
<Compile Include="Converters\BlockItemToRemoveEnabledVisibilityConverter.cs" />
|
<Compile Include="Converters\BlockItemToRemoveEnabledVisibilityConverter.cs" />
|
||||||
<Compile Include="Converters\BooleanToBlockMarginConverter.cs" />
|
|
||||||
<Compile Include="Converters\HashSignRemovalConverter.cs" />
|
<Compile Include="Converters\HashSignRemovalConverter.cs" />
|
||||||
<Compile Include="Converters\ItemRarityConverter.cs" />
|
<Compile Include="Converters\ItemRarityConverter.cs" />
|
||||||
<Compile Include="Converters\TreeViewMarginConverter.cs" />
|
<Compile Include="Converters\TreeViewMarginConverter.cs" />
|
||||||
|
|
|
@ -98,6 +98,7 @@ namespace Filtration.ViewModels
|
||||||
private IItemFilterBlockViewModelBase _selectedBlockViewModel;
|
private IItemFilterBlockViewModelBase _selectedBlockViewModel;
|
||||||
private IItemFilterCommentBlockViewModel _sectionBrowserSelectedBlockViewModel;
|
private IItemFilterCommentBlockViewModel _sectionBrowserSelectedBlockViewModel;
|
||||||
private readonly ObservableCollection<IItemFilterBlockViewModelBase> _itemFilterBlockViewModels;
|
private readonly ObservableCollection<IItemFilterBlockViewModelBase> _itemFilterBlockViewModels;
|
||||||
|
private ObservableCollection<IItemFilterBlockViewModelBase> _viewItemFilterBlockViewModels;
|
||||||
private ICollectionView _itemFilterBlockViewModelsCollectionView;
|
private ICollectionView _itemFilterBlockViewModelsCollectionView;
|
||||||
private Predicate<IItemFilterBlockViewModel> _blockFilterPredicate;
|
private Predicate<IItemFilterBlockViewModel> _blockFilterPredicate;
|
||||||
private ICommandManager _scriptCommandManager;
|
private ICommandManager _scriptCommandManager;
|
||||||
|
@ -153,6 +154,8 @@ namespace Filtration.ViewModels
|
||||||
icon.UriSource = new Uri("pack://application:,,,/Filtration;component/Resources/Icons/script_icon.png");
|
icon.UriSource = new Uri("pack://application:,,,/Filtration;component/Resources/Icons/script_icon.png");
|
||||||
icon.EndInit();
|
icon.EndInit();
|
||||||
IconSource = icon;
|
IconSource = icon;
|
||||||
|
|
||||||
|
_viewItemFilterBlockViewModels = new ObservableCollection<IItemFilterBlockViewModelBase>();
|
||||||
}
|
}
|
||||||
|
|
||||||
public void Initialise(IItemFilterScript itemFilterScript, bool newScript)
|
public void Initialise(IItemFilterScript itemFilterScript, bool newScript)
|
||||||
|
@ -174,6 +177,8 @@ namespace Filtration.ViewModels
|
||||||
|
|
||||||
Title = Filename;
|
Title = Filename;
|
||||||
ContentId = "ScriptContentId";
|
ContentId = "ScriptContentId";
|
||||||
|
|
||||||
|
UpdateBlockModelsForView();
|
||||||
}
|
}
|
||||||
|
|
||||||
private void ItemFilterBlocksOnCollectionChanged(object sender, NotifyCollectionChangedEventArgs notifyCollectionChangedEventArgs)
|
private void ItemFilterBlocksOnCollectionChanged(object sender, NotifyCollectionChangedEventArgs notifyCollectionChangedEventArgs)
|
||||||
|
@ -196,6 +201,8 @@ namespace Filtration.ViewModels
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
UpdateBlockModelsForView();
|
||||||
}
|
}
|
||||||
|
|
||||||
private void AddItemFilterBlockViewModels(IEnumerable<IItemFilterBlockBase> itemFilterBlocks, int addAtIndex)
|
private void AddItemFilterBlockViewModels(IEnumerable<IItemFilterBlockBase> itemFilterBlocks, int addAtIndex)
|
||||||
|
@ -278,6 +285,19 @@ namespace Filtration.ViewModels
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public ObservableCollection<IItemFilterBlockViewModelBase> ViewItemFilterBlockViewModels
|
||||||
|
{
|
||||||
|
get
|
||||||
|
{
|
||||||
|
return _viewItemFilterBlockViewModels;
|
||||||
|
}
|
||||||
|
set
|
||||||
|
{
|
||||||
|
_viewItemFilterBlockViewModels = value;
|
||||||
|
RaisePropertyChanged();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public ObservableCollection<IItemFilterBlockViewModelBase> ItemFilterBlockViewModels
|
public ObservableCollection<IItemFilterBlockViewModelBase> ItemFilterBlockViewModels
|
||||||
{
|
{
|
||||||
get
|
get
|
||||||
|
@ -1191,6 +1211,22 @@ namespace Filtration.ViewModels
|
||||||
else
|
else
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
UpdateBlockModelsForView();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void UpdateBlockModelsForView()
|
||||||
|
{
|
||||||
|
ObservableCollection<IItemFilterBlockViewModelBase> blocksForView = new ObservableCollection<IItemFilterBlockViewModelBase>();
|
||||||
|
foreach (var block in ItemFilterBlockViewModels)
|
||||||
|
{
|
||||||
|
if (block.IsVisible)
|
||||||
|
{
|
||||||
|
blocksForView.Add(block);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
ViewItemFilterBlockViewModels = blocksForView;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -11,14 +11,13 @@
|
||||||
xmlns:componentModel="clr-namespace:System.ComponentModel;assembly=WindowsBase"
|
xmlns:componentModel="clr-namespace:System.ComponentModel;assembly=WindowsBase"
|
||||||
mc:Ignorable="d"
|
mc:Ignorable="d"
|
||||||
d:DataContext="{d:DesignInstance Type=viewModels:ItemFilterBlockViewModel}"
|
d:DataContext="{d:DesignInstance Type=viewModels:ItemFilterBlockViewModel}"
|
||||||
d:DesignHeight="200" d:DesignWidth="800" Visibility="{Binding IsVisible, Converter={StaticResource BooleanVisibilityConverter}}">
|
d:DesignHeight="200" d:DesignWidth="800">
|
||||||
<UserControl.Resources>
|
<UserControl.Resources>
|
||||||
<ResourceDictionary>
|
<ResourceDictionary>
|
||||||
<ResourceDictionary.MergedDictionaries>
|
<ResourceDictionary.MergedDictionaries>
|
||||||
<ResourceDictionary>
|
<ResourceDictionary>
|
||||||
<views:BindingProxy x:Key="Proxy" Data="{Binding}" />
|
<views:BindingProxy x:Key="Proxy" Data="{Binding}" />
|
||||||
<converters:BlockGroupAdvancedFillColorConverter x:Key="BlockGroupAdvancedFillColorConverter" />
|
<converters:BlockGroupAdvancedFillColorConverter x:Key="BlockGroupAdvancedFillColorConverter" />
|
||||||
<converters:BooleanToBlockMarginConverter x:Key="BooleanToBlockMarginConverter"/>
|
|
||||||
<Style TargetType="{x:Type ContentPresenter}" x:Key="BlockItemFadeInStyle">
|
<Style TargetType="{x:Type ContentPresenter}" x:Key="BlockItemFadeInStyle">
|
||||||
<Setter Property="LayoutTransform">
|
<Setter Property="LayoutTransform">
|
||||||
<Setter.Value>
|
<Setter.Value>
|
||||||
|
@ -41,7 +40,7 @@
|
||||||
</ResourceDictionary.MergedDictionaries>
|
</ResourceDictionary.MergedDictionaries>
|
||||||
</ResourceDictionary>
|
</ResourceDictionary>
|
||||||
</UserControl.Resources>
|
</UserControl.Resources>
|
||||||
<Grid x:Name="TopLevelGrid" Margin="{Binding IsVisible, Converter={StaticResource BooleanToBlockMarginConverter}}">
|
<Grid x:Name="TopLevelGrid">
|
||||||
<Grid x:Name="DisabledBlockOverlay" IsHitTestVisible="False" Panel.ZIndex="1000" Visibility="{Binding BlockEnabled, Converter={StaticResource InverseBooleanVisibilityConverter}}">
|
<Grid x:Name="DisabledBlockOverlay" IsHitTestVisible="False" Panel.ZIndex="1000" Visibility="{Binding BlockEnabled, Converter={StaticResource InverseBooleanVisibilityConverter}}">
|
||||||
<Grid.Background>
|
<Grid.Background>
|
||||||
<SolidColorBrush Color="Gray" Opacity=".5" />
|
<SolidColorBrush Color="Gray" Opacity=".5" />
|
||||||
|
|
|
@ -46,7 +46,7 @@
|
||||||
</ResourceDictionary>
|
</ResourceDictionary>
|
||||||
|
|
||||||
</UserControl.Resources>
|
</UserControl.Resources>
|
||||||
<Grid Margin="2">
|
<Grid>
|
||||||
<Grid.ContextMenu>
|
<Grid.ContextMenu>
|
||||||
<ContextMenu>
|
<ContextMenu>
|
||||||
<ContextMenu.Items>
|
<ContextMenu.Items>
|
||||||
|
|
|
@ -54,7 +54,7 @@
|
||||||
</Border>
|
</Border>
|
||||||
<Border Grid.Row="1" BorderThickness="1" BorderBrush="DarkGray" Margin="5,5,5,5">
|
<Border Grid.Row="1" BorderThickness="1" BorderBrush="DarkGray" Margin="5,5,5,5">
|
||||||
<DockPanel LastChildFill="True">
|
<DockPanel LastChildFill="True">
|
||||||
<userControls:AutoScrollingListBox ItemsSource="{Binding ItemFilterBlockViewModels}"
|
<userControls:AutoScrollingListBox ItemsSource="{Binding ViewItemFilterBlockViewModels}"
|
||||||
Padding="5"
|
Padding="5"
|
||||||
HorizontalContentAlignment="Stretch"
|
HorizontalContentAlignment="Stretch"
|
||||||
BorderThickness="0"
|
BorderThickness="0"
|
||||||
|
@ -72,7 +72,7 @@
|
||||||
<Setter Property="Template">
|
<Setter Property="Template">
|
||||||
<Setter.Value>
|
<Setter.Value>
|
||||||
<ControlTemplate TargetType="ListBoxItem">
|
<ControlTemplate TargetType="ListBoxItem">
|
||||||
<Border Name="Border" SnapsToDevicePixels="true">
|
<Border Name="Border" Padding="2" SnapsToDevicePixels="true">
|
||||||
<ContentPresenter />
|
<ContentPresenter />
|
||||||
</Border>
|
</Border>
|
||||||
<ControlTemplate.Triggers>
|
<ControlTemplate.Triggers>
|
||||||
|
|
Loading…
Reference in New Issue