Browse Source

Finish tree nodes.

pull/1716/head
Siegfried Pammer 6 years ago
parent
commit
d6c688c58a
  1. 2
      ILSpy/Commands/DecompileInNewViewCommand.cs
  2. 7
      ILSpy/Docking/PaneCollection.cs
  3. 1
      ILSpy/ILSpy.csproj
  4. 2
      ILSpy/Metadata/CoffHeaderTreeNode.cs
  5. 2
      ILSpy/Metadata/CorTables/AssemblyTableTreeNode.cs
  6. 2
      ILSpy/Metadata/CorTables/ConstantTableTreeNode.cs
  7. 2
      ILSpy/Metadata/CorTables/CustomAttributeTableTreeNode.cs
  8. 2
      ILSpy/Metadata/CorTables/DeclSecurityTableTreeNode.cs
  9. 2
      ILSpy/Metadata/CorTables/EventTableTreeNode.cs
  10. 2
      ILSpy/Metadata/CorTables/ExportedTypeTableTreeNode.cs
  11. 2
      ILSpy/Metadata/CorTables/FieldLayoutTableTreeNode.cs
  12. 2
      ILSpy/Metadata/CorTables/FieldTableTreeNode.cs
  13. 2
      ILSpy/Metadata/CorTables/FileTableTreeNode.cs
  14. 2
      ILSpy/Metadata/CorTables/GenericParamConstraintTableTreeNode.cs
  15. 2
      ILSpy/Metadata/CorTables/GenericParamTableTreeNode.cs
  16. 2
      ILSpy/Metadata/CorTables/ManifestResourceTableTreeNode.cs
  17. 2
      ILSpy/Metadata/CorTables/MemberRefTableTreeNode.cs
  18. 2
      ILSpy/Metadata/CorTables/MethodImplTableTreeNode.cs
  19. 2
      ILSpy/Metadata/CorTables/MethodSemanticsTableTreeNode.cs
  20. 2
      ILSpy/Metadata/CorTables/MethodSpecTableTreeNode.cs
  21. 2
      ILSpy/Metadata/CorTables/MethodTableTreeNode.cs
  22. 2
      ILSpy/Metadata/CorTables/ModuleRefTableTreeNode.cs
  23. 2
      ILSpy/Metadata/CorTables/ModuleTableTreeNode.cs
  24. 2
      ILSpy/Metadata/CorTables/ParamTableTreeNode.cs
  25. 2
      ILSpy/Metadata/CorTables/PropertyTableTreeNode.cs
  26. 2
      ILSpy/Metadata/CorTables/StandAloneSigTableTreeNode.cs
  27. 2
      ILSpy/Metadata/CorTables/TypeDefTableTreeNode.cs
  28. 2
      ILSpy/Metadata/CorTables/TypeRefTableTreeNode.cs
  29. 2
      ILSpy/Metadata/CorTables/TypeSpecTableTreeNode.cs
  30. 2
      ILSpy/Metadata/DataDirectoriesTreeNode.cs
  31. 2
      ILSpy/Metadata/DosHeaderTreeNode.cs
  32. 2
      ILSpy/Metadata/MetadataTreeNode.cs
  33. 6
      ILSpy/TextView/DecompilerTextView.cs
  34. 25
      ILSpy/ViewModels/TabPageModel.cs
  35. 39
      ILSpy/themes/generic.xaml

2
ILSpy/Commands/DecompileInNewViewCommand.cs

@ -69,7 +69,7 @@ namespace ICSharpCode.ILSpy.Commands @@ -69,7 +69,7 @@ namespace ICSharpCode.ILSpy.Commands
if (nodes.Length == 0)
return;
var title = string.Join(", ", nodes.Select(x => x.ToString()));
var title = string.Join(", ", nodes.Select(x => x.Text.ToString()));
DockWorkspace.Instance.TabPages.Add(new ViewModels.TabPageModel() { Language = MainWindow.Instance.CurrentLanguage, LanguageVersion = MainWindow.Instance.CurrentLanguageVersion });
DockWorkspace.Instance.ActiveTabPage = DockWorkspace.Instance.TabPages.Last();
MainWindow.Instance.SelectNodes(nodes);

7
ILSpy/Docking/PaneCollection.cs

@ -26,13 +26,12 @@ using ICSharpCode.ILSpy.ViewModels; @@ -26,13 +26,12 @@ using ICSharpCode.ILSpy.ViewModels;
namespace ICSharpCode.ILSpy.Docking
{
public class PaneCollection<T> : INotifyCollectionChanged, INotifyPropertyChanged, ICollection<T>
public class PaneCollection<T> : INotifyCollectionChanged, ICollection<T>
where T : PaneModel
{
private ObservableCollection<T> observableCollection = new ObservableCollection<T>();
public event NotifyCollectionChangedEventHandler CollectionChanged;
public event PropertyChangedEventHandler PropertyChanged;
public PaneCollection()
{
@ -41,9 +40,7 @@ namespace ICSharpCode.ILSpy.Docking @@ -41,9 +40,7 @@ namespace ICSharpCode.ILSpy.Docking
public void Add(T item)
{
if (!this.Any(pane => pane.ContentId == item.ContentId)) {
observableCollection.Add(item);
}
observableCollection.Add(item);
item.IsVisible = true;
item.IsActive = true;

1
ILSpy/ILSpy.csproj

@ -55,6 +55,7 @@ @@ -55,6 +55,7 @@
<PackageReference Include="System.Composition" Version="1.3.0" />
<PackageReference Include="Mono.Cecil" Version="0.10.3" />
<PackageReference Include="OSVersionHelper" Version="1.0.11" />
<PackageReference Include="DataGridExtensions" Version="2.1.1" />
</ItemGroup>
<ItemGroup>

2
ILSpy/Metadata/CoffHeaderTreeNode.cs

@ -44,7 +44,9 @@ namespace ICSharpCode.ILSpy.Metadata @@ -44,7 +44,9 @@ namespace ICSharpCode.ILSpy.Metadata
public override bool View(TabPageModel tabPage)
{
tabPage.Title = Text.ToString();
tabPage.SupportsLanguageSwitching = false;
var dataGrid = new DataGrid {
Columns = {
new DataGridTextColumn { IsReadOnly = true, Header = "Member", Binding = new Binding("Member") },

2
ILSpy/Metadata/CorTables/AssemblyTableTreeNode.cs

@ -50,7 +50,9 @@ namespace ICSharpCode.ILSpy.Metadata @@ -50,7 +50,9 @@ namespace ICSharpCode.ILSpy.Metadata
public override bool View(ViewModels.TabPageModel tabPage)
{
tabPage.Title = Text.ToString();
tabPage.SupportsLanguageSwitching = false;
ListView view = Helpers.CreateListView("AssemblyView");
var metadata = module.Metadata;

2
ILSpy/Metadata/CorTables/ConstantTableTreeNode.cs

@ -45,7 +45,9 @@ namespace ICSharpCode.ILSpy.Metadata @@ -45,7 +45,9 @@ namespace ICSharpCode.ILSpy.Metadata
public override bool View(TabPageModel tabPage)
{
tabPage.Title = Text.ToString();
tabPage.SupportsLanguageSwitching = false;
ListView view = Helpers.CreateListView("ConstantsView");
var metadata = module.Metadata;

2
ILSpy/Metadata/CorTables/CustomAttributeTableTreeNode.cs

@ -48,7 +48,9 @@ namespace ICSharpCode.ILSpy.Metadata @@ -48,7 +48,9 @@ namespace ICSharpCode.ILSpy.Metadata
public override bool View(ViewModels.TabPageModel tabPage)
{
tabPage.Title = Text.ToString();
tabPage.SupportsLanguageSwitching = false;
ListView view = Helpers.CreateListView("CustomAttributesView");
var metadata = module.Metadata;

2
ILSpy/Metadata/CorTables/DeclSecurityTableTreeNode.cs

@ -48,7 +48,9 @@ namespace ICSharpCode.ILSpy.Metadata @@ -48,7 +48,9 @@ namespace ICSharpCode.ILSpy.Metadata
public override bool View(ViewModels.TabPageModel tabPage)
{
tabPage.Title = Text.ToString();
tabPage.SupportsLanguageSwitching = false;
ListView view = Helpers.CreateListView("DeclSecurityAttrsView");
var metadata = module.Metadata;

2
ILSpy/Metadata/CorTables/EventTableTreeNode.cs

@ -49,7 +49,9 @@ namespace ICSharpCode.ILSpy.Metadata @@ -49,7 +49,9 @@ namespace ICSharpCode.ILSpy.Metadata
public override bool View(ViewModels.TabPageModel tabPage)
{
tabPage.Title = Text.ToString();
tabPage.SupportsLanguageSwitching = false;
ListView view = Helpers.CreateListView("EventDefsView");
var metadata = module.Metadata;

2
ILSpy/Metadata/CorTables/ExportedTypeTableTreeNode.cs

@ -50,7 +50,9 @@ namespace ICSharpCode.ILSpy.Metadata @@ -50,7 +50,9 @@ namespace ICSharpCode.ILSpy.Metadata
public override bool View(ViewModels.TabPageModel tabPage)
{
tabPage.Title = Text.ToString();
tabPage.SupportsLanguageSwitching = false;
ListView view = Helpers.CreateListView("ExportedTypesView");
var metadata = module.Metadata;

2
ILSpy/Metadata/CorTables/FieldLayoutTableTreeNode.cs

@ -49,7 +49,9 @@ namespace ICSharpCode.ILSpy.Metadata @@ -49,7 +49,9 @@ namespace ICSharpCode.ILSpy.Metadata
public override bool View(ViewModels.TabPageModel tabPage)
{
tabPage.Title = Text.ToString();
tabPage.SupportsLanguageSwitching = false;
ListView view = Helpers.CreateListView("FieldLayoutsView");
var metadata = module.Metadata;

2
ILSpy/Metadata/CorTables/FieldTableTreeNode.cs

@ -49,7 +49,9 @@ namespace ICSharpCode.ILSpy.Metadata @@ -49,7 +49,9 @@ namespace ICSharpCode.ILSpy.Metadata
public override bool View(ViewModels.TabPageModel tabPage)
{
tabPage.Title = Text.ToString();
tabPage.SupportsLanguageSwitching = false;
ListView view = Helpers.CreateListView("FieldDefsView");
var metadata = module.Metadata;

2
ILSpy/Metadata/CorTables/FileTableTreeNode.cs

@ -48,7 +48,9 @@ namespace ICSharpCode.ILSpy.Metadata @@ -48,7 +48,9 @@ namespace ICSharpCode.ILSpy.Metadata
public override bool View(ViewModels.TabPageModel tabPage)
{
tabPage.Title = Text.ToString();
tabPage.SupportsLanguageSwitching = false;
ListView view = Helpers.CreateListView("FilesView");
var metadata = module.Metadata;

2
ILSpy/Metadata/CorTables/GenericParamConstraintTableTreeNode.cs

@ -52,7 +52,9 @@ namespace ICSharpCode.ILSpy.Metadata @@ -52,7 +52,9 @@ namespace ICSharpCode.ILSpy.Metadata
public override bool View(ViewModels.TabPageModel tabPage)
{
tabPage.Title = Text.ToString();
tabPage.SupportsLanguageSwitching = false;
ListView view = Helpers.CreateListView("GenericParamConstraintsView");
var metadata = module.Metadata;

2
ILSpy/Metadata/CorTables/GenericParamTableTreeNode.cs

@ -52,7 +52,9 @@ namespace ICSharpCode.ILSpy.Metadata @@ -52,7 +52,9 @@ namespace ICSharpCode.ILSpy.Metadata
public override bool View(ViewModels.TabPageModel tabPage)
{
tabPage.Title = Text.ToString();
tabPage.SupportsLanguageSwitching = false;
ListView view = Helpers.CreateListView("GenericParamsView");
var metadata = module.Metadata;

2
ILSpy/Metadata/CorTables/ManifestResourceTableTreeNode.cs

@ -48,7 +48,9 @@ namespace ICSharpCode.ILSpy.Metadata @@ -48,7 +48,9 @@ namespace ICSharpCode.ILSpy.Metadata
public override bool View(ViewModels.TabPageModel tabPage)
{
tabPage.Title = Text.ToString();
tabPage.SupportsLanguageSwitching = false;
ListView view = Helpers.CreateListView("ManifestResourcesView");
var metadata = module.Metadata;

2
ILSpy/Metadata/CorTables/MemberRefTableTreeNode.cs

@ -49,7 +49,9 @@ namespace ICSharpCode.ILSpy.Metadata @@ -49,7 +49,9 @@ namespace ICSharpCode.ILSpy.Metadata
public override bool View(ViewModels.TabPageModel tabPage)
{
tabPage.Title = Text.ToString();
tabPage.SupportsLanguageSwitching = false;
ListView view = Helpers.CreateListView("MemberRefsView");
var metadata = module.Metadata;

2
ILSpy/Metadata/CorTables/MethodImplTableTreeNode.cs

@ -50,7 +50,9 @@ namespace ICSharpCode.ILSpy.Metadata @@ -50,7 +50,9 @@ namespace ICSharpCode.ILSpy.Metadata
public override bool View(ViewModels.TabPageModel tabPage)
{
tabPage.Title = Text.ToString();
tabPage.SupportsLanguageSwitching = false;
ListView view = Helpers.CreateListView("MethodImplView");
var metadata = module.Metadata;

2
ILSpy/Metadata/CorTables/MethodSemanticsTableTreeNode.cs

@ -50,7 +50,9 @@ namespace ICSharpCode.ILSpy.Metadata @@ -50,7 +50,9 @@ namespace ICSharpCode.ILSpy.Metadata
public override bool View(ViewModels.TabPageModel tabPage)
{
tabPage.Title = Text.ToString();
tabPage.SupportsLanguageSwitching = false;
ListView view = Helpers.CreateListView("MethodSemanticsView");
var metadata = module.Metadata;

2
ILSpy/Metadata/CorTables/MethodSpecTableTreeNode.cs

@ -52,7 +52,9 @@ namespace ICSharpCode.ILSpy.Metadata @@ -52,7 +52,9 @@ namespace ICSharpCode.ILSpy.Metadata
public override bool View(ViewModels.TabPageModel tabPage)
{
tabPage.Title = Text.ToString();
tabPage.SupportsLanguageSwitching = false;
ListView view = Helpers.CreateListView("MethodSpecsView");
var metadata = module.Metadata;

2
ILSpy/Metadata/CorTables/MethodTableTreeNode.cs

@ -49,7 +49,9 @@ namespace ICSharpCode.ILSpy.Metadata @@ -49,7 +49,9 @@ namespace ICSharpCode.ILSpy.Metadata
public override bool View(ViewModels.TabPageModel tabPage)
{
tabPage.Title = Text.ToString();
tabPage.SupportsLanguageSwitching = false;
ListView view = Helpers.CreateListView("MethodDefsView");
var metadata = module.Metadata;

2
ILSpy/Metadata/CorTables/ModuleRefTableTreeNode.cs

@ -50,7 +50,9 @@ namespace ICSharpCode.ILSpy.Metadata @@ -50,7 +50,9 @@ namespace ICSharpCode.ILSpy.Metadata
public override bool View(ViewModels.TabPageModel tabPage)
{
tabPage.Title = Text.ToString();
tabPage.SupportsLanguageSwitching = false;
ListView view = Helpers.CreateListView("ModuleRefsView");
var metadata = module.Metadata;

2
ILSpy/Metadata/CorTables/ModuleTableTreeNode.cs

@ -50,7 +50,9 @@ namespace ICSharpCode.ILSpy.Metadata @@ -50,7 +50,9 @@ namespace ICSharpCode.ILSpy.Metadata
public override bool View(ViewModels.TabPageModel tabPage)
{
tabPage.Title = Text.ToString();
tabPage.SupportsLanguageSwitching = false;
ListView view = Helpers.CreateListView("ModulesView");
var metadata = module.Metadata;

2
ILSpy/Metadata/CorTables/ParamTableTreeNode.cs

@ -52,7 +52,9 @@ namespace ICSharpCode.ILSpy.Metadata @@ -52,7 +52,9 @@ namespace ICSharpCode.ILSpy.Metadata
public override bool View(ViewModels.TabPageModel tabPage)
{
tabPage.Title = Text.ToString();
tabPage.SupportsLanguageSwitching = false;
ListView view = Helpers.CreateListView("ParamsView");
var metadata = module.Metadata;

2
ILSpy/Metadata/CorTables/PropertyTableTreeNode.cs

@ -49,7 +49,9 @@ namespace ICSharpCode.ILSpy.Metadata @@ -49,7 +49,9 @@ namespace ICSharpCode.ILSpy.Metadata
public override bool View(ViewModels.TabPageModel tabPage)
{
tabPage.Title = Text.ToString();
tabPage.SupportsLanguageSwitching = false;
ListView view = Helpers.CreateListView("PropertyDefsView");
var metadata = module.Metadata;

2
ILSpy/Metadata/CorTables/StandAloneSigTableTreeNode.cs

@ -48,7 +48,9 @@ namespace ICSharpCode.ILSpy.Metadata @@ -48,7 +48,9 @@ namespace ICSharpCode.ILSpy.Metadata
public override bool View(ViewModels.TabPageModel tabPage)
{
tabPage.Title = Text.ToString();
tabPage.SupportsLanguageSwitching = false;
ListView view = Helpers.CreateListView("StandAloneSigsView");
var metadata = module.Metadata;

2
ILSpy/Metadata/CorTables/TypeDefTableTreeNode.cs

@ -53,7 +53,9 @@ namespace ICSharpCode.ILSpy.Metadata @@ -53,7 +53,9 @@ namespace ICSharpCode.ILSpy.Metadata
public override bool View(ViewModels.TabPageModel tabPage)
{
tabPage.Title = Text.ToString();
tabPage.SupportsLanguageSwitching = false;
ListView view = Helpers.CreateListView("TypeDefsView");
var metadata = module.Metadata;

2
ILSpy/Metadata/CorTables/TypeRefTableTreeNode.cs

@ -51,7 +51,9 @@ namespace ICSharpCode.ILSpy.Metadata @@ -51,7 +51,9 @@ namespace ICSharpCode.ILSpy.Metadata
public override bool View(ViewModels.TabPageModel tabPage)
{
tabPage.Title = Text.ToString();
tabPage.SupportsLanguageSwitching = false;
ListView view = Helpers.CreateListView("TypeRefsView");
var metadata = module.Metadata;

2
ILSpy/Metadata/CorTables/TypeSpecTableTreeNode.cs

@ -52,7 +52,9 @@ namespace ICSharpCode.ILSpy.Metadata @@ -52,7 +52,9 @@ namespace ICSharpCode.ILSpy.Metadata
public override bool View(ViewModels.TabPageModel tabPage)
{
tabPage.Title = Text.ToString();
tabPage.SupportsLanguageSwitching = false;
ListView view = Helpers.CreateListView("TypeSpecsView");
var metadata = module.Metadata;

2
ILSpy/Metadata/DataDirectoriesTreeNode.cs

@ -41,7 +41,9 @@ namespace ICSharpCode.ILSpy.Metadata @@ -41,7 +41,9 @@ namespace ICSharpCode.ILSpy.Metadata
public override bool View(ViewModels.TabPageModel tabPage)
{
tabPage.Title = Text.ToString();
tabPage.SupportsLanguageSwitching = false;
var dataGrid = new DataGrid {
Columns = {
new DataGridTextColumn { IsReadOnly = true, Header = "Name", Binding = new Binding("Name") },

2
ILSpy/Metadata/DosHeaderTreeNode.cs

@ -41,7 +41,9 @@ namespace ICSharpCode.ILSpy.Metadata @@ -41,7 +41,9 @@ namespace ICSharpCode.ILSpy.Metadata
public override bool View(TabPageModel tabPage)
{
tabPage.Title = Text.ToString();
tabPage.SupportsLanguageSwitching = false;
var view = Helpers.CreateListView("EntryView");
var reader = module.Reader.GetEntireImage().GetReader(0, 64);

2
ILSpy/Metadata/MetadataTreeNode.cs

@ -50,7 +50,9 @@ namespace ICSharpCode.ILSpy.Metadata @@ -50,7 +50,9 @@ namespace ICSharpCode.ILSpy.Metadata
public override bool View(TabPageModel tabPage)
{
tabPage.Title = Text.ToString();
tabPage.SupportsLanguageSwitching = false;
return false;
}

6
ILSpy/TextView/DecompilerTextView.cs

@ -62,7 +62,7 @@ namespace ICSharpCode.ILSpy.TextView @@ -62,7 +62,7 @@ namespace ICSharpCode.ILSpy.TextView
/// Manages the TextEditor showing the decompiled code.
/// Contains all the threading logic that makes the decompiler work in the background.
/// </summary>
public sealed partial class DecompilerTextView : UserControl, IDisposable
public sealed partial class DecompilerTextView : UserControl, IDisposable, IHaveState
{
readonly ReferenceElementGenerator referenceElementGenerator;
readonly UIElementGenerator uiElementGenerator;
@ -1011,7 +1011,9 @@ namespace ICSharpCode.ILSpy.TextView @@ -1011,7 +1011,9 @@ namespace ICSharpCode.ILSpy.TextView
state.DecompiledNodes = decompiledNodes;
return state;
}
ViewState IHaveState.GetState() => GetState();
public void Dispose()
{
DisplaySettingsPanel.CurrentDisplaySettings.PropertyChanged -= CurrentDisplaySettings_PropertyChanged;

25
ILSpy/ViewModels/TabPageModel.cs

@ -71,7 +71,7 @@ namespace ICSharpCode.ILSpy.ViewModels @@ -71,7 +71,7 @@ namespace ICSharpCode.ILSpy.ViewModels
public ViewState GetState()
{
return null;
return (Content as IHaveState)?.GetState();
}
}
@ -79,23 +79,34 @@ namespace ICSharpCode.ILSpy.ViewModels @@ -79,23 +79,34 @@ namespace ICSharpCode.ILSpy.ViewModels
{
public static Task<T> ShowTextViewAsync<T>(this TabPageModel tabPage, Func<DecompilerTextView, Task<T>> action)
{
var textView = new DecompilerTextView();
tabPage.Content = textView;
if (!(tabPage.Content is DecompilerTextView textView)) {
textView = new DecompilerTextView();
tabPage.Content = textView;
}
return action(textView);
}
public static Task ShowTextViewAsync(this TabPageModel tabPage, Func<DecompilerTextView, Task> action)
{
var textView = new DecompilerTextView();
tabPage.Content = textView;
if (!(tabPage.Content is DecompilerTextView textView)) {
textView = new DecompilerTextView();
tabPage.Content = textView;
}
return action(textView);
}
public static void ShowTextView(this TabPageModel tabPage, Action<DecompilerTextView> action)
{
var textView = new DecompilerTextView();
tabPage.Content = textView;
if (!(tabPage.Content is DecompilerTextView textView)) {
textView = new DecompilerTextView();
tabPage.Content = textView;
}
action(textView);
}
}
public interface IHaveState
{
ViewState GetState();
}
}

39
ILSpy/themes/generic.xaml

@ -26,4 +26,43 @@ @@ -26,4 +26,43 @@
Data = "M 5,5 L 10,10 L 15,5 L 5,5"/>
</StackPanel>
</DataTemplate>
<DataTemplate x:Key="{ComponentResourceKey {x:Type controls:FilterableGridViewColumn}, ColumnHeaderTemplate}">
<StackPanel Orientation="Horizontal">
<TextBlock HorizontalAlignment="Center" Text="{Binding}"/>
<Path x:Name="upArrow"
Visibility="{Binding Path=Column.SortDirection, ConverterParameter={x:Static controls:ColumnSortDirection.Ascending}, RelativeSource={RelativeSource AncestorType={x:Type GridViewColumnHeader}}, Converter={StaticResource ColumnSortDirectionToVisibilityConverter}}"
StrokeThickness = "1"
Fill = "Gray"
Data = "M 5,10 L 15,10 L 10,5 L 5,10"/>
<Path x:Name="downArrow"
Visibility="{Binding Path=Column.SortDirection, ConverterParameter={x:Static controls:ColumnSortDirection.Descending}, RelativeSource={RelativeSource AncestorType={x:Type GridViewColumnHeader}}, Converter={StaticResource ColumnSortDirectionToVisibilityConverter}}"
StrokeThickness = "1"
Fill = "Gray"
Data = "M 5,5 L 10,10 L 15,5 L 5,5"/>
<CheckBox x:Name="isFilterOpen">
<CheckBox.Template>
<ControlTemplate TargetType="CheckBox">
<Path x:Name="filterSymbol"
StrokeThickness="1"
Fill="Gray"
Data="M 0,0L 20,0L 14,6L 14,12L 6,12L 6,6L 0,0"/>
<ControlTemplate.Triggers>
<Trigger Property="IsChecked" Value="True">
<Setter TargetName="filterSymbol" Property="Fill" Value="Gray"/>
<Setter TargetName="filterSymbol" Property="Stroke" Value="Transparent"/>
</Trigger>
<Trigger Property="IsChecked" Value="False">
<Setter TargetName="filterSymbol" Property="Fill" Value="Transparent"/>
<Setter TargetName="filterSymbol" Property="Stroke" Value="Gray"/>
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</CheckBox.Template>
</CheckBox>
<Popup StaysOpen="True" Placement="Top" HorizontalOffset="16" IsOpen="{Binding IsChecked, ElementName=isFilterOpen}">
<TextBox x:Name="filter" Height="24" Width="100" Text="{Binding Path=Column.FilterExpression, UpdateSourceTrigger=PropertyChanged, RelativeSource={RelativeSource AncestorType={x:Type GridViewColumnHeader}}}" />
</Popup>
</StackPanel>
</DataTemplate>
</ResourceDictionary>
Loading…
Cancel
Save