2

我在使用下面的代码时遇到问题:

<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 有一个构造函数。

还有什么我做错了吗?

4

3 回答 3

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;
于 2012-09-27T16:43:07.717 回答
0

该项目存在于窗口的资源中,而不是窗口本身

您可以将其直接放置在 Window 本身而不是 Resources 中以使您的代码正常工作,或者将其分配为 anx:Key而不是 anx:Name并使用它

(PageSwitcher)this.Resources["pageTransitionControl"]
于 2012-09-27T16:44:00.430 回答
0

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

于 2012-09-27T16:44:14.230 回答