[英]Image will not update in code only custom control inheriting from button in WPF
[英]Inheriting from a User Control in WPF - members are not accessible
閱讀完有關同一參數的所有先前答案后,我將發布以下問題。 他們都沒有工作。
我正在創建一個向導,它由一定數量的幻燈片組成。 每個幻燈片都是一個用戶控件,並且繼承自一個名為“ 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”。
任何提示都非常感謝
因為應該
<base:SlideBase.Resources
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相關的錯誤。
希望能幫助到你
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.