سؤال

هل هناك طريقة لقياس خصائص XAML مع حجم العناصر التي تنتمي إليها؟

في جوهر الأمر، لدي قالب تحكم قمت بإنشائه كبير جدًا لاستخدامه/ بشكل أساسي لأنني أريد استخدام نفس عنصر التحكم بأحجام مختلفة.المشكلة هي أنه يمكنني ضبط حجم عنصر التحكم على تلقائي (في ControlTemplate)، ولكن لا يتم تغيير حجم خصائص عناصر القالب المضمنة:على سبيل المثال، يظل StrokeThickness عند 10 بينما يجب أن يصبح 1.

إنه يعمل بشكل جيد عندما أقوم بتطبيق ScaleTransform على القالب، ولكن يؤدي ذلك إلى عنصر تحكم صغير جدًا عند استخدامه فعليًا:العرض/الارتفاع=يقوم تلقائيًا بتغيير حجم عنصر التحكم إلى الحجم المناسب وثم يتم تطبيق مقياس التحويل.لذلك أنا أتمتع بنوع من التحكم غير القابل للتوسع.

أنا جديد بعض الشيء في WPF، لذا قد تكون هناك طريقة مباشرة للقيام بذلك...

هل كانت مفيدة؟

المحلول

يمكنك محاولة ربط عرض وارتفاع عنصر التحكم داخل القالب بعرض وارتفاع عنصر التحكم الموجود في القالب على التوالي في وقت التشغيل.شيء مثل:

<Button>
    <Button.Template>
        <ControlTemplate TargetType={x:Type Button}>
            <Border Width="{TemplateBinding Property=ActualWidth}"
                    Height="{TemplateBinding Property=ActualHeight}">
                <ContentPresenter />
             </Border>
         </ControlTemplate>
    </Button.Template>
</Button>

لاحظ أن مصادر الربط هي FrameworkElement.ActualWidth و FrameworkElement.ActualHeight خصائص التحكم القالب.تحتوي هذه الخصائص على عرض وارتفاع عنصر التحكم بعد عرضه، والذي يمكن أن يختلف عما تم تحديده في عرض و ارتفاع ملكيات.وذلك لأنه يتم حساب القيم في نهاية المطاف في وقت التشغيل مع الأخذ في الاعتبار حجم أي عناصر تحكم رئيسية في الشجرة المرئية.

نصائح أخرى

وصفك هو غامض بعض الشيء، ولكن يبدو وكأنك سوف تريد أن يكون لها ViewBox مع الإمتداد المقرر ان الموحدة باعتبارها العنصر الجذر من التحكم الخاصة بك.

وسيئة للغاية لا يمكنك إنشاء قالب عنصر تحكم StackPanel، DockPanel، شبكة، أو أي حاوية أخرى.

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