views:

74

answers:

1

I have created a custom Treeview control and am trying to access the HierarchicalDataTemplate resource of this control from another page in the same project.

my this.sceneTemplate property is coming up null. I have looped through all the objects in the dictionary and it does exist.

How can I access this template?

Thanks

App.xaml

<Application x:Class="Foo.App"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    StartupUri="MainWindow.xaml" 
    DispatcherUnhandledException="App_DispatcherUnhandledException">
    <Application.Resources>
        <ResourceDictionary>
            <!--Merge the global resource to the application-->
            <ResourceDictionary.MergedDictionaries>
                <ResourceDictionary Source="Resources/Global.xaml"/>
                <ResourceDictionary Source="Resources/Scrollbar.xaml"/>
                <ResourceDictionary Source="/Controls/TreeView/Themes/Generic.xaml"/>
                <ResourceDictionary Source="/Controls/ListButton/Themes/Generic.xaml"/>
            </ResourceDictionary.MergedDictionaries>
        </ResourceDictionary>

    </Application.Resources>
</Application>

Where I am trying to access the resource from my Scene.xaml.cs page

 public LeagueDataTemplateSelector()
 {
    if (Application.Current != null)
    {

        this.sceneTemplate = (HierarchicalDataTemplate)Application.Current.FindResource("Scene");
        this.ItemTemplate = (HierarchicalDataTemplate)Application.Current.FindResource("Procedure");
        this.sub1Template = (HierarchicalDataTemplate)Application.Current.FindResource("SubProc1");
        this.sub2Template = (HierarchicalDataTemplate)Application.Current.FindResource("SubProc2");
    }

}

Scene HierarchicalDataTemplate

<HierarchicalDataTemplate x:Key="Scene" ItemsSource="{Binding XPath=Level}"
                                ItemContainerStyle="{StaticResource RadTreeViewItemStyleSub1}"
                                ItemTemplate="{StaticResource Procedure}"
                                >
        <Border>
            <Grid>
                <Grid.ColumnDefinitions>
                    <ColumnDefinition Width="Auto" />
                    <ColumnDefinition Width="Auto" />
                </Grid.ColumnDefinitions>
                <Label VerticalContentAlignment="Center" 
                        BorderThickness="0" 
                        BorderBrush="Transparent" 
                        Foreground="{StaticResource ListItemUnHighlight}" 
                        FontSize="24" 
                        Tag="{Binding XPath=@name}" 
                        MinHeight="55" 
                        Cursor="Hand" 
                        FontFamily="Arial" 
                        KeyboardNavigation.TabNavigation="None" 
                        Name="SubItem" >
                    <Label.ContextMenu>
                        <ContextMenu Name="editMenu">
                            <MenuItem Header="Edit"/>
                        </ContextMenu>
                    </Label.ContextMenu>
                    <TextBlock Text="{Binding XPath=@name}" VerticalAlignment="Center" TextWrapping="Wrap"></TextBlock>
                </Label>
            </Grid>
        </Border>
    </HierarchicalDataTemplate>

Update - Answer

Our program has a breadcrumb control that works by using a list of pages to navigate through. This list of pages was getting added during the splash screen before InitializeComponent was being ran. I moved this up above the page list code and everything in App.xaml is now found.

A: 

Our program has a breadcrumb control that works by using a list of pages to navigate through. This list of pages was getting added during the splash screen before InitializeComponent was being ran. I moved this up above the page list code and everything in App.xaml is now found.

Ryan