2009-05-25 12 views
17

मुझे XAML-blind मिल रहा है मुझे डर है। मैं एक एमएस भूतल अनुप्रयोग विकसित कर रहा हूं और मेरे पास एक ScatterViewItem के अंदर एक अंडाकार है (एक कंटेनर एक अंतिम उपयोगकर्ता आकार बदल सकता है)। मैं अंडाकार को एक सर्कल (चौड़ाई == ऊंचाई) रखना चाहता हूं और जितना संभव हो उतना बड़ा रखूं (एसवीआई की चौड़ाई/ऊंचाई का निम्नतम मूल्य अंडाकार की चौड़ाई/ऊंचाई दोनों गुणों के लिए लिया जाना चाहिए)।एक्सएएमएल में, मैं एक अंडाकार एक सर्कल कैसे रख सकता हूं?

एक एक्सएएमएल केवल समाधान (संपत्ति ट्रिगर्स या इसी तरह का उपयोग करके) पसंद किया जाता है।

आपकी सहायता हमेशा की तरह बहुत सराहना की जाती है।

उत्तर

15

क्या एक साधारण Viewbox चाल है? जैसे

<Viewbox xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    HorizontalAlignment="Center" 
    VerticalAlignment="Center"> 
    <Canvas Width="100" Height="100"> 
     <Ellipse Fill="Red" Width="100" Height="100" /> 
    </Canvas> 
</Viewbox> 

Viewbox इसकी सामग्री पैमाने Viewbox के क्षेत्र को भरने के लिए होगा, और डिफ़ॉल्ट रूप से आनुपातिक स्केलिंग करता है। निर्दिष्ट क्षैतिज और ऊर्ध्वाधर संरेखण Ellipse केंद्रित होते हैं जब इसे पूर्ण आकार तक नहीं बढ़ाया जा सकता है (आनुपातिक स्केलिंग की वजह से)।

+1

ब्रिजेंट! Briljant (मुझे आपको कम से कम 15 वर्णों की आवश्यकता है) –

5
<Ellipse x:Name="anEllipse" Width={Binding Path=ActualHeight ElementName=anEllipse} /> 

यदि आप रिश्तेदार बाध्यकारी भी करते हैं तो शायद आप इसे नाम देने से दूर हो सकते हैं।

+2

क्या होगा यदि बाउंडिंग बॉक्स की ऊंचाई चौड़ाई से अधिक है? उस स्थिति में मुझे ऊंचाई = वास्तविक विडथ चाहिए। –

+0

इस मामले में, आपको ऐसा करने के लिए कोड लिखने की आवश्यकता है - यानी आप लालची आकार देना चाहते हैं जो पहलू अनुपात को बनाए रखता है (जैसे कि मूवी प्लेयर कैसे करता है, जो स्विच करता है जिस पर यह किनारों पर आधारित होता है बड़ा है) –

+0

यही मैंने सोचा था। बहुत बुरा, लेकिन कोई समस्या नहीं है। धन्यवाद –

28

मैं कुछ मिनट पहले इस सवाल पर ठोकर खाई और @Paul बेट्स की तुलना में काफी बेहतर समाधान (मैं उसका जवाब पर टिप्पणी हैं तो मैं कर सकता, लेकिन मैं नहीं कर सकता)

आप बस <Ellipse Stretch="Uniform" /> उपयोग कर सकते हैं पाया एक सर्कल पाने के लिए।

स्रोत: http://forums.silverlight.net/t/160615.aspx

+2

यह अब तक का सबसे अच्छा समाधान है। – flyingfisch

संबंधित मुद्दे