为什么此代码导致“名称在当前上下文中不存在”错误?

时间:2012-09-27 16:31:28

标签: c# wpf xaml code-behind

我遇到以下代码的问题:

<Window x:Class="ChangePage.PageSwitcher"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:local="clr-namespace:ChangePage"
    Title="ECE Showcase"
    WindowState="Maximized">

    <Window.Resources>
        <local:PageSwitcher x:Name="pageTransitionControl" TransitionType="SlideAndFade"/>
    </Window.Resources>

在文件PageSwitcher.xaml.cs后面的代码中,我有以下几行:

pageTransitionControl.TransitionType = whatever;

然而,这会导致以下错误:

  

当前上下文中不存在名称“pageTransitionControl”

我一直在互联网上搜索几个小时,现在试图找到原因,但还未能弄明白。 Build Action设置为Page,所有文件都保存,我尝试重建,PageSwitcher在ChangePage命名空间,PageSwitcher有一个构造函数。

还有别的我做错了吗?

3 个答案:

答案 0 :(得分:4)

您无法为资源指定名称。资源有关键。

<Window x:Class="ChangePage.PageSwitcher"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:local="clr-namespace:ChangePage"
    Title="ECE Showcase"
    WindowState="Maximized">

    <Window.Resources>
        <local:PageSwitcher x:Key="pageTransitionControl" TransitionType="SlideAndFade"/>
    </Window.Resources>

然后在xaml.cs中:

var pageTransitionControl = (PageSwitcher)Resources["pageTransitionControl"];
pageTransitionControl.TransitionType = whatever;

答案 1 :(得分:0)

该项目存在于Window的资源中,而不存在于Window本身

您可以将其直接放在Window本身而不是它的资源中,以使您的代码有效,或者为其分配x:Key而不是x:Name并使用

(PageSwitcher)this.Resources["pageTransitionControl"]

答案 2 :(得分:0)

似乎无法直接访问后面代码中的资源。您可能需要使用Resources [“pageTransitionControl”]来访问它。