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\BooleanToBlockActionConverter.cs" />
|
||||
<Compile Include="Converters\BlockItemToRemoveEnabledVisibilityConverter.cs" />
|
||||
<Compile Include="Converters\BooleanToBlockMarginConverter.cs" />
|
||||
<Compile Include="Converters\HashSignRemovalConverter.cs" />
|
||||
<Compile Include="Converters\ItemRarityConverter.cs" />
|
||||
<Compile Include="Converters\TreeViewMarginConverter.cs" />
|
||||
|
|
|
@ -98,6 +98,7 @@ namespace Filtration.ViewModels
|
|||
private IItemFilterBlockViewModelBase _selectedBlockViewModel;
|
||||
private IItemFilterCommentBlockViewModel _sectionBrowserSelectedBlockViewModel;
|
||||
private readonly ObservableCollection<IItemFilterBlockViewModelBase> _itemFilterBlockViewModels;
|
||||
private ObservableCollection<IItemFilterBlockViewModelBase> _viewItemFilterBlockViewModels;
|
||||
private ICollectionView _itemFilterBlockViewModelsCollectionView;
|
||||
private Predicate<IItemFilterBlockViewModel> _blockFilterPredicate;
|
||||
private ICommandManager _scriptCommandManager;
|
||||
|
@ -153,6 +154,8 @@ namespace Filtration.ViewModels
|
|||
icon.UriSource = new Uri("pack://application:,,,/Filtration;component/Resources/Icons/script_icon.png");
|
||||
icon.EndInit();
|
||||
IconSource = icon;
|
||||
|
||||
_viewItemFilterBlockViewModels = new ObservableCollection<IItemFilterBlockViewModelBase>();
|
||||
}
|
||||
|
||||
public void Initialise(IItemFilterScript itemFilterScript, bool newScript)
|
||||
|
@ -174,6 +177,8 @@ namespace Filtration.ViewModels
|
|||
|
||||
Title = Filename;
|
||||
ContentId = "ScriptContentId";
|
||||
|
||||
UpdateBlockModelsForView();
|
||||
}
|
||||
|
||||
private void ItemFilterBlocksOnCollectionChanged(object sender, NotifyCollectionChangedEventArgs notifyCollectionChangedEventArgs)
|
||||
|
@ -196,6 +201,8 @@ namespace Filtration.ViewModels
|
|||
break;
|
||||
}
|
||||
}
|
||||
|
||||
UpdateBlockModelsForView();
|
||||
}
|
||||
|
||||
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
|
||||
{
|
||||
get
|
||||
|
@ -1191,6 +1211,22 @@ namespace Filtration.ViewModels
|
|||
else
|
||||
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"
|
||||
mc:Ignorable="d"
|
||||
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>
|
||||
<ResourceDictionary>
|
||||
<ResourceDictionary.MergedDictionaries>
|
||||
<ResourceDictionary>
|
||||
<views:BindingProxy x:Key="Proxy" Data="{Binding}" />
|
||||
<converters:BlockGroupAdvancedFillColorConverter x:Key="BlockGroupAdvancedFillColorConverter" />
|
||||
<converters:BooleanToBlockMarginConverter x:Key="BooleanToBlockMarginConverter"/>
|
||||
<Style TargetType="{x:Type ContentPresenter}" x:Key="BlockItemFadeInStyle">
|
||||
<Setter Property="LayoutTransform">
|
||||
<Setter.Value>
|
||||
|
@ -41,7 +40,7 @@
|
|||
</ResourceDictionary.MergedDictionaries>
|
||||
</ResourceDictionary>
|
||||
</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.Background>
|
||||
<SolidColorBrush Color="Gray" Opacity=".5" />
|
||||
|
|
|
@ -46,7 +46,7 @@
|
|||
</ResourceDictionary>
|
||||
|
||||
</UserControl.Resources>
|
||||
<Grid Margin="2">
|
||||
<Grid>
|
||||
<Grid.ContextMenu>
|
||||
<ContextMenu>
|
||||
<ContextMenu.Items>
|
||||
|
|
|
@ -54,7 +54,7 @@
|
|||
</Border>
|
||||
<Border Grid.Row="1" BorderThickness="1" BorderBrush="DarkGray" Margin="5,5,5,5">
|
||||
<DockPanel LastChildFill="True">
|
||||
<userControls:AutoScrollingListBox ItemsSource="{Binding ItemFilterBlockViewModels}"
|
||||
<userControls:AutoScrollingListBox ItemsSource="{Binding ViewItemFilterBlockViewModels}"
|
||||
Padding="5"
|
||||
HorizontalContentAlignment="Stretch"
|
||||
BorderThickness="0"
|
||||
|
@ -72,7 +72,7 @@
|
|||
<Setter Property="Template">
|
||||
<Setter.Value>
|
||||
<ControlTemplate TargetType="ListBoxItem">
|
||||
<Border Name="Border" SnapsToDevicePixels="true">
|
||||
<Border Name="Border" Padding="2" SnapsToDevicePixels="true">
|
||||
<ContentPresenter />
|
||||
</Border>
|
||||
<ControlTemplate.Triggers>
|
||||
|
|
Loading…
Reference in New Issue