Вопрос

Я работаю над проектом WPF, и мое намерение состоит в том, чтобы сделать два специфических радиообуттона изменять свойства другого указанного компонента. Но на данный момент я просто пытаюсь сохранить строку внутри радиообуттона.

Для этого я создал класс поведения:

    public class AdjustBehavior : Behavior<RadioButton>
{

С этим свойством:

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

И эти геттерские и загадки:

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

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

На стороне XAML я сделал это:

    <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>

Где INT: это пространство имен для взаимодействия.Behaviors и I: - это пространство имен на класс ReadingBehavior. Но всякий раз, когда я начинаю свое приложение, LabelContent устанавливается на NULL. Почему?

Я не публикул оставшуюся часть своего класса поведения, потому что я думаю, что это не имеет значения, но я сделаю при необходимости.

Заранее спасибо.

Озвучий

Это было полезно?

Решение

Прилагаемое свойство требует прилагаемой цели. В вашем случае, что цель - кнопка радио, поэтому вы должны использовать

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

Если вам нужно просто создать свойство ReadingBehavior, используйте нормальную собственность зависимости, а не прикреплено.

Другие советы

Вы должны использовать зависимостьProperty.register, не зарегистрирован. Это не используется в качестве прилагаемого свойства, а скорее стандартной собственности зависимости.

LabelContent должен быть либо прикрепленным свойством в свойстве RadioButton или зависимости на RegivedBehavior.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top