WPF - Ошибка свойств зависимости
-
02-10-2019 - |
Вопрос
Я работаю над проектом 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.