osc*_*kuo 12 .net c# wpf xaml attached-properties
我正在尝试附加属性和样式触发器,希望能够更多地了解它.我写了一个非常简单的WPF Windows应用程序,附带一个属性:
public static readonly DependencyProperty SomethingProperty =
DependencyProperty.RegisterAttached(
"Something",
typeof(int),
typeof(Window1),
new UIPropertyMetadata(0));
public int GetSomethingProperty(DependencyObject d)
{
return (int)d.GetValue(SomethingProperty);
}
public void SetSomethingProperty(DependencyObject d, int value)
{
d.SetValue(SomethingProperty, value);
}
Run Code Online (Sandbox Code Playgroud)
我试图用按钮样式部分中定义的属性触发器更新'Something'附加属性:
<Window x:Class="TestStyleTrigger.Window1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="clr-namespace:TestStyleTrigger;assembly=TestStyleTrigger"
Title="Window1" Height="210" Width="190">
<Window.Resources>
<Style x:Key="buttonStyle" TargetType="{x:Type Button}">
<Style.Triggers>
<Trigger Property="IsPressed" Value="True">
<Setter Property="local:Window1.Something" Value="1" />
</Trigger>
</Style.Triggers>
</Style>
</Window.Resources>
<Button Style="{StaticResource buttonStyle}"></Button>
</Window>
Run Code Online (Sandbox Code Playgroud)
但是,我不断收到编译错误:
错误MC4003:无法解析样式属性'Something'.验证拥有类型是Style的TargetType,还是使用Class.Property语法指定Property.第10行第29位.
我无法理解为什么它会给我这个错误,因为我在该部分的标签中使用了'Class.Property'语法.任何人都可以告诉我如何解决这个编译错误?
Ken*_*art 17
您对依赖项属性的支持方法命名不正确,必须是静态的:
public static int GetSomething(DependencyObject d)
{
return (int)d.GetValue(SomethingProperty);
}
public static void SetSomething(DependencyObject d, int value)
{
d.SetValue(SomethingProperty, value);
}
Run Code Online (Sandbox Code Playgroud)
此外,您不应在XAML中的本地XML NS映射中指定程序集,因为名称空间位于当前程序集中.改为:
xmlns:local="clr-namespace:TestStyleTrigger"
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
11449 次 |
最近记录: |