App.xaml中的WPF全局资源

时间:2010-06-18 13:47:50

标签: wpf xaml resources

我创建了一个自定义Treeview控件,并尝试从同一项目中的另一个页面访问此控件的HierarchicalDataTemplate资源。

我的this.sceneTemplate属性即将出现。我已经遍历了字典中的所有对象,它确实存在。

如何访问此模板?

由于

的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>

我试图从Scene.xaml.cs页面访问资源

 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>

更新 - 回答

我们的程序有一个面包屑控件,可以通过使用页面列表进行导航。在运行InitializeComponent之前,在启动屏幕期间添加了此页面列表。我把它移到了页面列表代码之上,现在找到了App.xaml中的所有内容。

1 个答案:

答案 0 :(得分:0)

我们的程序有一个面包屑控件,可以通过使用页面列表进行导航。在运行InitializeComponent之前,在启动屏幕期间添加了此页面列表。我把它移到了页面列表代码之上,现在找到了App.xaml中的所有内容。