WPF - خطأ خصائص التبعية
-
02-10-2019 - |
سؤال
أنا أعمل على مشروع 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: هي مساحة الاسم للتفاعل. ولكن كلما بدأت طلبي ، يتم تعيين Labelcontent على NULL. لماذا ا؟
لم أقم بنشر بقية فصل السلوك لأنني أعتقد أنه لن يهم ، لكنني سأفعل إذا لزم الأمر.
شكرا مقدما.
كلارك
المحلول
تتطلب الخاصية المرفقة إرفاق الهدف. في حالتك ، يكون هذا الهدف هو زر الراديو ، لذلك يجب عليك استخدامه
<RadioButton i:AdjustBehavior.LabelContent="Apple" ... />
إذا كنت بحاجة إلى إنشاء خاصية لـ Adjustbehavior ، فاستخدم خاصية التبعية العادية ، غير متصلة.
نصائح أخرى
يجب عليك استخدام DependencyProperty.register ، وليس التسجيل. لا يتم استخدام هذا كخاصية مرفقة ، بل خاصية تبعية قياسية.
يجب أن يكون معهد التسمية إما خاصية مرفقة على Radiobutton أو خاصية التبعية على AdgustBehavior.