سؤال

أنا أعمل على مشروع 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.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top