Frage

Ich arbeite an einem WPF-Projekt, und meine Absicht ist, zwei spezifische Radiobuttons ändern Eigenschaften einer anderen spezifizierten Komponenten zu machen. Aber jetzt, ich bin nur einen String in der Radiobutton zu speichern versuchen.

Für das, ich habe eine Verhaltensklasse erstellt:

    public class AdjustBehavior : Behavior<RadioButton>
{

Mit dieser Eigenschaft:

        public static DependencyProperty AdjustLabelContentProperty =
        DependencyProperty.RegisterAttached("LabelContent", typeof(String), typeof(AdjustBehavior),
            new FrameworkPropertyMetadata(null,
    FrameworkPropertyMetadataOptions.Inherits));

Und diese Getter und Setter:

       public static String GetLabelContent(RadioButton tb)
    {
        return (String)tb.GetValue(AdjustLabelContentProperty);
    }

    public static void SetLabelContent(RadioButton tb, String value)
    {
        tb.SetValue(AdjustLabelContentProperty, value);
    }

Auf der XAML-Seite, ich habe diese:

    <RadioButton Content="Banana" Height="16" HorizontalAlignment="Left" Margin="30,216,0,0" Name="radioButton1" VerticalAlignment="Top" GroupName="a" IsThreeState="False" IsChecked="True" Checked="radioButton1_Checked" >
        <int:Interaction.Behaviors>
            <i:AdjustBehavior LabelContent="Apple" />
        </int:Interaction.Behaviors>
    </RadioButton>

Wo int: ist der Namespace Interaction.Behaviors und i: ist der Namespace an die AdjustBehavior Klasse. Aber immer, wenn ich meine Anwendung starten, wird LabelContent auf null gesetzt. Warum?

Ich habe nicht den Rest meines Verhalten Klasse schreiben, weil ich denke, es wird kein Problem sein, aber ich werde tun, wenn nötig.

Vielen Dank im Voraus.

Clark

War es hilfreich?

Lösung

Angehängte Eigenschaft erfordert Ziel angebracht zu werden. In Ihrem Fall, dass Zieloptionsfeld ist, so sollten Sie verwenden

<RadioButton i:AdjustBehavior.LabelContent="Apple" ... />

Wenn Sie müssen nur Eigentum von AdjustBehavior erstellen, verwenden normale Abhängigkeitseigenschaft, nicht angebracht ist.

Andere Tipps

Sie DependencyProperty.Register verwenden sollten, nicht Registerattached. Dies ist nicht als angehängte Eigenschaft verwendet wird, sondern eine Standard-Abhängigkeitseigenschaft.

LabelContent sollte entweder eine angefügte Eigenschaft auf RadioButton- oder Abhängigkeitseigenschaft auf AdjustBehavior sein.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top