WPF - Ошибка свойств зависимости - PullRequest
0 голосов
/ 02 июля 2010

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

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

    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: пространство имен для Interaction.Behaviors, а i: пространство имен для класса AdjustBehavior. Но всякий раз, когда я запускаю свое приложение, LabelContent устанавливается в нуль. Почему?

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

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

Clark

Ответы [ 3 ]

1 голос
/ 02 июля 2010

Вы должны использовать DependencyProperty.Register, а не RegisterAttached. Это не используется как присоединенное свойство, а скорее как стандартное свойство зависимости.

0 голосов
/ 02 июля 2010

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

0 голосов
/ 02 июля 2010

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

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

. Если вам нужно просто создать свойство AdjustBehavior, используйте обычное свойство зависимости, а не присоединенное.

...