tehMick का जवाब बिल्कुल सही है: आप निश्चित रूप से करने के बजाय आकार बदलने पाठ बॉक्स खुद को अनुकूलित करने के लिए एक कंटेनर बनाने चाहिए। और यदि यह आपके लिए काम करता है GridSplitter
एक बहुत अच्छा इन-द-बॉक्स समाधान है।
मेरे पास एक ही स्थिति थी लेकिन ग्रिडस्प्लिटर काम नहीं करेगा, इसलिए मैंने एक "ResizeBorder" नियंत्रण बनाया जिसने अपने चार कोनों पर माउस ड्रैग को दो आयामों में आकार देने के लिए, या किनारों के बीच में आकार बदलने के लिए नियंत्रित किया। यह वास्तव में बहुत ही सरल कोड है: बस माउसडाउन को संभालें, एक स्थानीय चर सेट करें जो माउसडाउन स्थान और साइड/कोने को खींचा जा रहा है, फिर माउसमोव आकार को अपडेट करें।
मेरा ResizeBorder स्टाइल करने योग्य था, इसलिए मैं किनारों पर किनारों और रेखाओं पर केवल चार बक्से दिखा सकता था, या कुछ भी जटिल जो मैं सपना देख सकता था।
इसके अलावा, ध्यान दें कि आप एक ग्रिड और GridSplitters या एक ResizeBorder या कुछ और का उपयोग कर रहे हैं, तो आप इस तरह नियंत्रण के चारों ओर अपने आकार बदलने कार्यक्षमता या तो डालने का विकल्प है:
<my:ResizeBorder ...>
<TextBox ... />
</my:ResizeBorder>
या द्वारा पाठ बॉक्स के लिए ही ControlTemplate अद्यतन करने:
<ControlTemplate x:Key="ResizableTextBox" TargetType="{x:Type TextBox}">
<my:ResizeBorder>
...
</my:ResizeBorder>
</ControlTemplate>
...
<TextBox Template="{StaticResource ResizableTextBoxTemplate}" ... />
बाद इस विधि के लाभ है कि आप और बनाने के लिए हो सकता है बक्सें आकार बदलने योग्य एक शैली या संलग्न संपत्ति का उपयोग कर सकते है कि आप ca हैं n कोड में गतिशील रूप से टेक्स्टबॉक्स की आकार बदलने योग्यता को आसानी से बदलें।
स्रोत
2010-05-14 18:25:36
डुप्लिकेट: http://stackoverflow.com/questions/771275/resizing-a-control-in-wpf – Heinzi
इसे डुप्लिकेट के रूप में चिह्नित नहीं किया जाना चाहिए क्योंकि उस लिंक पर कुछ भी काम नहीं करता है। –