Skip to content

Commit 9abbcec

Browse files
authored
Merge pull request #3177 from MDoerner/ExperimentsFor3121
Revert 'Remove depedency on System.Windows.Interactivity'
2 parents 89d2b43 + 7fcf4b4 commit 9abbcec

File tree

5 files changed

+62
-55
lines changed

5 files changed

+62
-55
lines changed

RetailCoder.VBE/Rubberduck.csproj

Lines changed: 2 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -294,6 +294,7 @@
294294
<Reference Include="System.Runtime.Remoting" />
295295
<Reference Include="System.Runtime.Serialization" />
296296
<Reference Include="System.Windows.Forms" />
297+
<Reference Include="System.Windows.Interactivity, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL" />
297298
<Reference Include="System.Xaml" />
298299
<Reference Include="Microsoft.CSharp" />
299300
<Reference Include="System.Xml" />
@@ -408,9 +409,6 @@
408409
<Compile Include="UI\Command\IndentCurrentProjectCommand.cs" />
409410
<Compile Include="UI\Command\MenuItems\CommandBars\ContextDescriptionLabelMenuItem.cs" />
410411
<Compile Include="UI\Command\MenuItems\IndentCurrentProjectCommandMenuItem.cs" />
411-
<Compile Include="UI\Controls\SelectableTreeView.xaml.cs">
412-
<DependentUpon>SelectableTreeView.xaml</DependentUpon>
413-
</Compile>
414412
<Compile Include="UI\EnvironmentProvider.cs" />
415413
<Compile Include="UI\Inspections\AggregateInspectionResult.cs" />
416414
<Compile Include="UI\ModernFolderBrowser.cs" />
@@ -902,6 +900,7 @@
902900
<Compile Include="UI\ToDoItems\ToDoExplorerDockablePresenter.cs" />
903901
<Compile Include="UI\ToDoItems\ToDoExplorerViewModel.cs" />
904902
<Compile Include="UI\ToDoItems\ToDoItemClickEventArgs.cs" />
903+
<Compile Include="UI\Controls\BindableSelectedItemBehavior.cs" />
905904
<Compile Include="UI\UnitTesting\TestExplorerControl.xaml.cs">
906905
<DependentUpon>TestExplorerControl.xaml</DependentUpon>
907906
</Compile>
@@ -1370,10 +1369,6 @@
13701369
<Generator>MSBuild:Compile</Generator>
13711370
<SubType>Designer</SubType>
13721371
</Page>
1373-
<Page Include="UI\Controls\SelectableTreeView.xaml">
1374-
<SubType>Designer</SubType>
1375-
<Generator>MSBuild:Compile</Generator>
1376-
</Page>
13771372
<Page Include="UI\Inspections\InspectionResultsControl.xaml">
13781373
<SubType>Designer</SubType>
13791374
<Generator>MSBuild:Compile</Generator>

RetailCoder.VBE/UI/CodeExplorer/CodeExplorerControl.xaml

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
44
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
55
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
6+
xmlns:i="http://schemas.microsoft.com/expression/2010/interactivity"
67
xmlns:codeExplorer="clr-namespace:Rubberduck.Navigation.CodeExplorer"
78
xmlns:controls="clr-namespace:Rubberduck.UI.Controls"
89
xmlns:themes="clr-namespace:Microsoft.Windows.Themes;assembly=PresentationFramework.Aero"
@@ -738,15 +739,17 @@
738739
</ToolBar>
739740
</ToolBarTray>
740741

741-
<controls:SelectableTreeView x:Name="ProjectTree"
742+
<TreeView x:Name="ProjectTree"
742743
Grid.Row="1"
743744
Background="White"
744745
ItemContainerStyle="{StaticResource ShinyTreeView}"
745746
HorizontalContentAlignment="Stretch"
746747
Style="{StaticResource CodeExplorerTreeViewStyle}" BorderThickness="0,1"
747-
VirtualizingPanel.IsVirtualizing="False"
748-
SelectedItem="{Binding SelectedItem, Mode=TwoWay}">
749-
</controls:SelectableTreeView>
748+
VirtualizingPanel.IsVirtualizing="False">
749+
<i:Interaction.Behaviors>
750+
<controls:BindableSelectedItemBehavior SelectedItem="{Binding SelectedItem, Mode=TwoWay}" />
751+
</i:Interaction.Behaviors>
752+
</TreeView>
750753

751754
<controls:BusyIndicator Grid.Row="1" Width="120" Height="120" Visibility="{Binding IsBusy, Converter={StaticResource BoolToVisibility}}" />
752755

Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
using System.Windows;
2+
using System.Windows.Controls;
3+
using System.Windows.Interactivity;
4+
5+
namespace Rubberduck.UI.Controls
6+
{
7+
/// <summary>
8+
/// http://stackoverflow.com/a/5118406/1188513
9+
/// </summary>
10+
public class BindableSelectedItemBehavior : Behavior<TreeView>
11+
{
12+
public object SelectedItem
13+
{
14+
get { return (object) GetValue(SelectedItemProperty); }
15+
set { SetValue(SelectedItemProperty, value); }
16+
}
17+
18+
public static readonly DependencyProperty SelectedItemProperty =
19+
DependencyProperty.Register("SelectedItem", typeof (object), typeof (BindableSelectedItemBehavior),
20+
new UIPropertyMetadata(null, OnSelectedItemChanged));
21+
22+
private static void OnSelectedItemChanged(DependencyObject sender, DependencyPropertyChangedEventArgs e)
23+
{
24+
var item = e.NewValue as TreeViewItem;
25+
if (item != null)
26+
{
27+
item.SetValue(TreeViewItem.IsSelectedProperty, true);
28+
}
29+
}
30+
31+
protected override void OnAttached()
32+
{
33+
base.OnAttached();
34+
35+
AssociatedObject.SelectedItemChanged += OnTreeViewSelectedItemChanged;
36+
}
37+
38+
protected override void OnDetaching()
39+
{
40+
base.OnDetaching();
41+
42+
if (AssociatedObject != null)
43+
{
44+
AssociatedObject.SelectedItemChanged -= OnTreeViewSelectedItemChanged;
45+
}
46+
}
47+
48+
private void OnTreeViewSelectedItemChanged(object sender, RoutedPropertyChangedEventArgs<object> e)
49+
{
50+
SelectedItem = e.NewValue;
51+
}
52+
}
53+
}

RetailCoder.VBE/UI/Controls/SelectableTreeView.xaml

Lines changed: 0 additions & 7 deletions
This file was deleted.

RetailCoder.VBE/UI/Controls/SelectableTreeView.xaml.cs

Lines changed: 0 additions & 37 deletions
This file was deleted.

0 commit comments

Comments
 (0)