嘿,这里所有人都是关于WPF和控件的noob问题。
我下载了名为 FluidKit 的项目,该项目附带了一系列 3D图像效果以及图像效果的示例总的来说。
我遇到的问题是我只想要所有这些 1类型效果,但我不确定如何制作新项目并复制/粘贴 FluidKit < / strong>我的新项目的代码只是为了达到所需的效果。我需要能够在我的窗口中重现这种情况,而不是像我现在那样只复制一次。
代码如下:
TransitionTester.xaml
其中有一些设置如:
立方体(从左到右)
立方体(从右到左&gt;
立方体(从上到下)
立方体(从下到上)
滑动(从左到右)
滑动(从右到左)
翻转(从左到右)
翻转(从右到左)
此 TransitionTester.xaml 看起来是 UserControl 。
所以我创建了一个新的WPF项目,现在我有以下几种形式:
MainWindow.xaml
TransitionTester.xaml
当然我将引用替换为 fluidkit.dll 。
将从fluidKit项目的代码复制/粘贴到我的新项目后,我最后只有2个错误,这对我来说是惊人的!
错误是:
错误CS1061&#39; MainWindow&#39;不包含&#39; SwitchImage&#39;的定义没有扩展方法&#39; SwitchImage&#39;接受类型&#39; MainWindow&#39;的第一个参数。可以找到(你错过了使用指令或程序集引用吗?)
错误资源&#34; SlideTransition&#34;无法解决。
我的MainWindow.xaml代码如下所示:
<Window x:Class="flipwindow.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:flipwindow"
xmlns:Controls="clr-namespace:FluidKit.Controls;assembly=FluidKit"
mc:Ignorable="d"
Title="MainWindow" Height="350" Width="525">
<Grid>
<Controls:TransitionPresenter x:Name="_transContainer"
MouseLeftButtonDown="SwitchImage"
RestDuration="0:0:3"
IsLooped="True"
Transition="{StaticResource SlideTransition}">
<Image x:Name="_image1"
Source="Images/img1.png"
Stretch="Fill" />
<Image x:Name="_image2"
Source="Images/img2.png"
Stretch="Fill" />
<Image x:Name="_image3"
Source="Images/img3.png"
Stretch="Fill" />
</Controls:TransitionPresenter>
</Grid>
</Window>
该页面背后的代码如下所示:
namespace flipwindow
{
/// <summary>
/// Interaction logic for MainWindow.xaml
/// </summary>
public partial class MainWindow : Window
{
private string _backItem = "_image1";
private string _frontItem = "_image2";
public MainWindow()
{
InitializeComponent();
Loaded += TransitionTester_Loaded;
//PlayCube();
}
private void TransitionTester_Loaded(object sender, RoutedEventArgs e)
{
_transContainer.TransitionCompleted += _transContainer_TransitionCompleted;
}
private void _transContainer_TransitionCompleted(object sender, EventArgs e)
{
SwapFrontAndBack();
}
private void SwapFrontAndBack()
{
string temp = _frontItem;
_frontItem = _backItem;
_backItem = temp;
}
private void PlayCube()
{
CubeTransition transition = Resources["CubeTransition"] as CubeTransition;
//transition.Rotation = Direction.LeftToRight;
//transition.Rotation = Direction.RightToLeft;
//transition.Rotation = Direction.TopToBottom;
transition.Rotation = Direction.BottomToTop;
_transContainer.Transition = transition;
_transContainer.ApplyTransition(_frontItem, _backItem);
}
}
}
上面列出的第二个错误显示在这一行:
Transition =&#34; {StaticResource SlideTransition}&#34;&gt;
虽然我不确定第一个错误以及它正在寻找什么以便纠正错误。它似乎可能与 UserControl.Resources 有关,我似乎无法添加到我的窗口中:
<UserControl.Resources>
<Controls:SlideTransition x:Key="SlideTransition" />
<Controls:CubeTransition x:Key="CubeTransition" Rotation="BottomToTop" />
<Controls:FlipTransition x:Key="FlipTransition" />
</UserControl.Resources>
布局如下所示:
我的 MainWindow.xaml设计看起来也不错:
将其与原始FluidKit窗口进行比较时:
所以帮助我解决这两个错误的任何帮助都会很棒!
答案 0 :(得分:1)
首先:MouseLeftButtonDown标记引用代码中的回调函数,当然无法找到。因此,只需将SwitchImage
函数插入TransitionTester.xaml.cs
中FluidKit原始代码中的MainWindow
类代码,该MainWindow.xaml.cs
类代码应该在MainWindow.xaml
文件旁边创建{1}}文件。 (可能为了测试目的而保持空白)
第二:是的,您必须将<UserControl.Resources>
xml代码从原始xaml-File复制到您的文件中。但是您必须将标记<UserControl.Resources>
替换为<MainWindow.Resources>
,因为您的周围标记为<MainWindow>
。 (稍后在代码中引用的名为SliceTransition
的资源在此块中定义)