阅读完有关同一参数的所有先前答案后,我将发布以下问题。他们都没有工作。
我正在创建一个向导,它由一定数量的幻灯片组成。每个幻灯片都是用户控件,并且继承自称为“ SlideBase”的基类。
public abstract class SlideBase: System.Windows.Controls.UserControl
{
#region DependecyProperty
public static readonly DependencyProperty FilterOptionProperty =
DependencyProperty.Register("FilterOption", typeof(FilterOptionsBase), typeof(SlideBase), new FrameworkPropertyMetadata(null, FrameworkPropertyMetadataOptions.BindsTwoWayByDefault,OnFilterChanged));
private static void OnFilterChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
{
SlideBase s = (SlideBase)d;
(s.Content as FrameworkElement).DataContext = (FilterOptionsBase)e.NewValue;
}
public FilterOptionsBase FilterOption
{
get
{
return (FilterOptionsBase)GetValue(FilterOptionProperty);
}
set
{
SetValue(FilterOptionProperty, value);
}
}
public static readonly DependencyProperty IsValidProperty =
DependencyProperty.Register("IsValid", typeof(bool), typeof(SlideBase), new FrameworkPropertyMetadata(false, FrameworkPropertyMetadataOptions.BindsTwoWayByDefault));
public virtual bool IsValid
{
get
{
return (bool)GetValue(IsValidProperty);
}
set
{
SetValue(IsValidProperty, value);
}
}
#endregion
}
Cover.XAML以下列方式从SlideBase继承
<base:SlideBase
xmlns:base="clr-namespace:WPFOPS.Model.OperatorLog.Models"
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:sdk="http://schemas.microsoft.com/winfx/2006/xaml/presentation/sdk"
x:Class="WPFOPS.Views.OperatorLog.FilterWizard.Cover"
mc:Ignorable="d"
Width="615" Height="370">
<UserControl.Resources>
<ResourceDictionary>
<Storyboard x:Name="Animation01" RepeatBehavior="Forever">
使用以下Cover.xaml.cs
namespace WPFOPS.Views.OperatorLog.FilterWizard
{
public partial class Cover : SlideBase
{
public Cover():base()
{
InitializeComponent();
Loaded+=(s,e)=> {
Animation01.Begin();
};
IsValid = true;
}
}
}
我收到以下错误:
这是VS2015中的WPF项目。目标框架4.5.2。平台目标为“任何CPU”。
任何提示都非常感谢
VS消息令人误解。
问题与StoryBoard元素有关。它必须有一个钥匙
<Storyboard x:Key="Animation01" x:Name="Animation01" RepeatBehavior="Forever">
从代码隐藏中,我需要以这种方式访问它:
public Cover():base()
{
InitializeComponent();
//Loaded += (s, e) =>
//{
// Animation01.Begin(); // THIS IS WRONG
//};
IsValid = true;
this.Loaded += new RoutedEventHandler(MainWindow_Loaded);
}
void MainWindow_Loaded(object sender, RoutedEventArgs e)
{
Storyboard sb = this.FindResource("Animation01") as Storyboard;
sb.Begin();
}
我很幸运,因为来自VS的所有错误消息都绝对具有误导性。
我卸载了Views文件夹和ViewModels文件夹。我只在其中包含“ .cs”文件的情况下编译了项目,以便在设计时正确命名和找到所有名称空间(在本例中为SlideBase名称空间)。
我再次加载了Views和ViewModels文件夹,最后得到了与Storyboard相关的错误。
希望能帮助到你
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句