मेरे पास एक ग्रिड है जो पूरी स्क्रीन को कवर करता है, और मैं इसे स्टोरीबोर्ड के साथ स्क्रीन के शीर्ष (या नीचे नीचे) में अनुवाद करता हूं। अब मैं वही करना चाहता हूं लेकिन शीर्ष से 48px की दूरी के साथ। ऐसा करने के लिए मैं में SlideToPosition = -GridContent.ActualHeight + 48;
के साथ शीर्ष स्थिति की गणना करता हूं। यह ठीक है जब स्क्रीन का आकार स्थिर होता है।किसी गणना/पूर्ण स्थिति में अनुवाद
समस्या स्थितियों में, जहां मैं इस स्थिति की पुनः गणना करने के लिए है की एक बहुत कुछ देखते हैं कि है:
- एप्लिकेशन आकार बदलने
- उन्मुखीकरण में परिवर्तन
- मोबाइल परदे पर मेनू दिखाई
परिणाम बदलते समय और कभी-कभी गलत होने पर परिणाम भी झटकेदार होता है। मैंने
ApplicationView.GetForCurrentView().VisibleBounds.Top
का उपयोग करने की भी कोशिश की, लेकिन यह एक अलग चर के साथ ही वही है। क्या इस स्थिति में अनुवाद करने का कोई बेहतर तरीका है, बिना किसी चर को फिर से समझना? क्योंकि आप मूल रूप से एक नकारात्मक स्थान पर अपने ग्रिड offsetting रहे हैं के बजाय इसे आकार बदलने
<Grid Name="GridContent">
<Grid Name="GridTranslate">
<Grid.RenderTransform>
<TranslateTransform x:Name="TranslateTransformContent" />
</Grid.RenderTransform>
</Grid>
</Grid>
<Storyboard x:Name="StoryboardUp">
<DoubleAnimation Storyboard.TargetName="TranslateTransformContent" Storyboard.TargetProperty="Y" To="{x:Bind Path=SlideToPosition, Mode=OneWay}" Duration="0:0:0.4">
</Storyboard>
<Storyboard x:Name="StoryboardDown">
<DoubleAnimation Storyboard.TargetName="TranslateTransformContent" Storyboard.TargetProperty="Y" To="0" Duration="0:0:0.4">
</Storyboard>
मैं ग्रिड ऑफ़सेट करता हूं, क्योंकि मैं वही प्रभाव चाहता हूं उदाहरण के लिए अनलॉक स्क्रीन जहां आप पूरी स्क्रीन को दबाते हैं। मैं हर अभिविन्यास/स्थिति में 48 पीएक्स को ठीक करना चाहता हूं। आपका समाधान मुझे एक सापेक्ष ऊंचाई देता है जो केवल 48px (उदा। 720) अभिविन्यास में है। –
मैं उस मामले में अनुवाद ट्रान्सफॉर्म का उपयोग करने के खिलाफ आपको सलाह दूंगा। दृश्य से छिपी हुई नकारात्मक स्थिति का उपयोग करते समय यह अविश्वसनीय प्रतीत होता है। इसके बजाय मार्जिन को एनिमेट करें। –