c# - Actualización de propiedad adjunta personalizada en el disparador de estilo con Setter
.net wpf (1)
Sus métodos de respaldo para la propiedad de dependencia se nombran incorrectamente y deben ser estáticos:
public static int GetSomething(DependencyObject d)
{
return (int)d.GetValue(SomethingProperty);
}
public static void SetSomething(DependencyObject d, int value)
{
d.SetValue(SomethingProperty, value);
}
Además, no debe especificar el ensamblaje en la asignación de XML NS local en el XAML porque el espacio de nombres está en el ensamblaje actual. Haz esto en su lugar:
xmlns:local="clr-namespace:TestStyleTrigger"
Estaba probando propiedades adjuntas y desencadenadores de estilo con la esperanza de obtener más información al respecto. Escribí una aplicación de Windows WPF muy simple con una propiedad adjunta:
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);
}
Y estaba tratando de actualizar la propiedad adjunta ''Algo'' con un desencadenador de propiedad definido en la sección de estilo de botón:
<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>
Sin embargo, seguí recibiendo el siguiente error de compilación:
error MC4003: No se puede resolver la propiedad de estilo ''Algo''. Verifique que el tipo propietario sea TargetType del estilo o use la sintaxis Class.Property para especificar la propiedad. Línea 10 Posición 29.
No puedo entender por qué me da este error porque utilicé la sintaxis ''Clase.Propiedad'' en la etiqueta de la sección. ¿Alguien puede decirme cómo puedo solucionar este error de compilación?