Ich habe versucht, angefügten Eigenschaften und Stil-Trigger in der Hoffnung, mehr darüber zu erfahren. Ich schrieb eine sehr einfache WPF Windows-Anwendung mit einer daran befestigten Eigenschaft:Aktualisieren von benutzerdefinierten angehängten Eigenschaft in Style-Trigger mit Setter
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);
}
Und ich versuche, das ‚etwas‘ angefügten Eigenschaft mit einer Eigenschaft Trigger in der Schaltfläche Stil Abschnitt definiert zu aktualisieren:
<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>
Ich habe jedoch folgenden Kompilierungsfehler erhalten:
Fehler MC4003: Die Style-Eigenschaft 'Something' kann nicht aufgelöst werden. Stellen Sie sicher, dass der besitzende Typ der TargetType des Styles ist, oder verwenden Sie die Class.Property-Syntax, um die Eigenschaft anzugeben. Zeile 10 Position 29.
Ich kann nicht verstehen, warum es mir diesen Fehler gibt, weil ich die 'Class.Property' Syntax im Tag des Abschnitts verwendet habe. Kann mir jemand sagen, wie ich diesen Kompilierungsfehler beheben kann?
Ich hatte bereits ein völlig statisches Mädchen für meine AttachedProperty, auch mit dem richtigen Get und Set. Obwohl ich genau die gleiche Ausnahme wie das OP hatte, kann es auch gelöst werden, indem die Assembly-Spezifikation im Namespace entfernt wird (was in meinem Fall automatisch von ReSharper hinzugefügt wurde). +1 – LuckyLikey