1
我有以下屬性定義:附加屬性
public static class Extensions
{
public static readonly DependencyProperty TestProperty = DependencyProperty.RegisterAttached("Test", typeof(Storyboard), typeof(UIElement), new UIPropertyMetadata(null));
public static void SetTest(UIElement element, Storyboard value)
{
element.SetValue(TestProperty, value);
}
public static Storyboard GetTest(UIElement element)
{
return (Storyboard)element.GetValue(TestProperty);
}
}
,並嘗試在XAML
<UserControl
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="clr-namespace:Application;assembly=Application"
x:Name="template"
Height="40" Width="1460">
<Grid Background="#FF000000">
<TextBlock Foreground="White" VerticalAlignment="Center" HorizontalAlignment="Left" TextAlignment="Left" FontSize="32">Example</TextBlock>
</Grid>
<UserControl.Style>
<Style>
<Setter Property="local:Extensions.Test">
<Setter.Value>
<Storyboard>
<DoubleAnimation Storyboard.TargetName="template" From="270" To="360" Duration="0:0:1" Storyboard.TargetProperty="Angle" />
</Storyboard>
</Setter.Value>
</Setter>
</Style>
</UserControl.Style>
</UserControl>
使用當我嘗試加載這樣XAML(例如,使用XamlReader.Load(stream);
) ,我得到以下消息的例外
'local:Extensions.Test'屬性不是有效的DependencyPrope rty類型'Application.Extensions'。驗證該屬性是否具有使用以「Property」後綴結尾的成員字段定義的DependencyProperty。對象'System.Windows.Setter'出錯。
有人可以幫我解決這個問題嗎?
在此先感謝!
不,他不希望這是的情況下的一個DependencyProperty類「擴展」,他希望這是用於現有類「UIElement」的實例的附加屬性,UserControl從該類繼承。 – Alain 2012-04-03 17:54:13
@Alain你錯了。所有者類型必須是聲明屬性的類型。您不能聲明其他類型爲您所附屬性的所有者。閱讀[這裏](http://msdn.microsoft.com/en-us/library/ms597495.aspx)並嘗試之前,你downvote。 – Clemens 2012-04-03 18:00:16
如果這是真的解決方案顯然不是使所有者「擴展」,或他不能將該屬性應用於UIElements,這顯然是他的意圖。但是,他也不需要創建一個繼承UIElement的新類型。 – Alain 2012-04-03 18:05:01