سؤال

أنا بحاجة إلى تنفيذ Canvas التي جداول محتوياته وفقا لحجمها.وأنا أعلم أن هناك Viewbox, التي موازين كل شيء داخله.ولكن أنا لا يمكن استخدام هذا لأن بعض العناصر لها حجم ثابت ولا يمكن تحجيمها.

أيضا كيف يمكنني ربط حجم Canvas إلى العنصر الأصلي (على سبيل المثال يمكن تغيير حجم نافذة).هناك sizeToContent ويندوز ، أريد الحجم المناسب بالضبط العكس.أيضا قماش يستخدم بعض الرسم على أساس حجم استضافة عنصر, كيف يتم رسم أثار وكيف يمكنني التأكد من أنه يعتمد فقط إذا كان يحصل صالحة (أو دقيقة) الحجم ؟

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

المحلول

إذا لم تحدد أي عرض أو ارتفاع قماش تلقائيا يستخدم كل المساحة المتاحة.لأن هذا هو الافتراضي VerticalAlignment و HorizontalAlignment يتم تعيين Stretch.

ماذا تعني قماش موازين انها المحتويات وفقا حجمه دون رفع جميع محتويات بعض ثابتة الحجم ؟

تحديث بعد تعليقات

إذا كان لديك رسم خوارزمية بالفعل جداول المحتوى إلى قماش الطول والعرض ثم كل ما عليك القيام به هو تغيير القماش لتناسب المنطقة على ما أعتقد ؟ في هذه الحالة فقط إزالة ضمنية الطول/العرض القيم و قماش وسيتم تغيير حجم لتناسب الحاوية.

قد تحتاج إلى استخدام ActualHeight/ActualWidth بدلا من الطول/العرض في خوارزمية الرسم بعد هذا على الرغم من.ActualHeight/ActualWidth عودة القيم تخطيط حاوية سوف تعطي الخاص بك قماش حتى هذه تمثل القيم قماش تعادل مع.

نصائح أخرى

واعتقد انه يمكن العثور على إجابات لأسئلتك كل شيء في بلدي <لأ href = "http://kentb.blogspot.com/2008/08/london-underground-wpf-demo.html" يختلط = "نوفولو noreferrer "> مترو أنفاق لندن عرض .

وأنا أفعل هذا من الذاكرة، ولكن إذا لم تخني نافذة يستخدم إما لوحة أو قماش كجزء من انها ControlTemplate (التي تقع ContentPresenter)، مما يعني أن قماش وضعها مباشرة في النافذة سيكون القضايا تغيير حجم تلقائيا مثل ذلك ربما في أماكن أخرى. وهناك عدد قليل من الطرق الأساسية لمعالجة هذا الأمر.

1 اكتب ControlTemplate جديد لنافذة لاستخدامها. :( الصفحة 2 مكان المحتوى الخاص بك مباشرة في نافذة وليس في قماش داخل نافذة: /
3 هل لاسم ملزمة. :)

<MyWindow x:Name="topWindow">
    <Canvas x:Name="topCanvas" Width="{Binding ElementName=topWindow, Path=ActualWidth}" Height="{Binding ElementName=topWindow, Path=ActualHeight}">
        ...Content...
    </Canvas>
</MyWindow>

و(كما يحدث، وكثيرا ما ربط شبكات داخل قماش في هذا الشكل، لذلك يمكنني بسهولة تحريك العناصر الانتقال من موقف الشبكة واحد إلى آخر.)

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