2010-12-06 23 views
12

मुझे अपने उपलब्ध स्थान पर विस्तार करने के लिए एक ग्रिड में टेक्स्टबॉक्स बनाने के लिए एक अच्छा समाधान चाहिए, लेकिन इसमें टेक्स्ट कितना समय लगता है इसके अनुसार विस्तार न करें।डब्ल्यूपीएफ: उपलब्ध चौड़ाई से टेक्स्टबॉक्स का विस्तार करें लेकिन इसकी सामग्री से नहीं?

मुझे लगता है कि अधिकांश समाधान एक डमी-सीमा बनाने और अपने वास्तविक विवाद से बांधने के लिए है, लेकिन यह मेरे लिए हैकी समाधान है। सीमा-समाधान को सीमा पर एक छोटे से मार्जिन सेट की आवश्यकता होती है, साथ ही यह बिल्कुल अच्छा नहीं है। इसे कम करने के लिए यूआई बहुत अजीब व्यवहार करेगा। इस समाधान को पसंद नहीं है। एक बेहतर होना चाहिए? मैं चाहता हूं कि टेक्स्टबॉक्स के लिए अपनी सामग्री के साथ विस्तार न करें। यह मुश्किल नहीं होना चाहिए। कृपया मुझे बताएं कि यह कैसे करें।

संपादित करें:

एक अजीब बात यह है कि मैंने देखा है कि निम्नलिखित कोड सीमा एक बहुत बड़ा तो यह हो गया है बनाता है:

<Grid> 
    <Border Name="dummy1" Background="Red" /> 
    <TextBox Text="23242342343555554234234444444444423423423432344444444" Width="{Binding ActualWidth, ElementName=dummy1}" /> 
</Grid> 

सीमा और पाठ बॉक्स आदेश की जगह सीमा में आता है टेक्स्टबॉक्स में अच्छी तरह से फिट है, लेकिन मुझे जो चाहिए वह विपरीत है। जैसा कि पहले कहा गया था, कम से कम 0.5 तक मार्जिन (सीमा पर) को सेट करने से यह काम करता है लेकिन परिणामस्वरूप थोड़ा सा यूआईआईआई यूआई के साथ।

+1

यदि आपके पास ग्रिड में टेक्स्टबॉक्स है, तो इसे डिफ़ॉल्ट रूप से अपने माता-पिता तक फैलाया जाना चाहिए। क्या आप वाकई कुछ भी नहीं है जो आपकी क्षैतिज हस्ताक्षर संपत्ति को संशोधित करता है? क्या आप ग्रिड नियंत्रण या कुछ अन्य नियंत्रण (जैसे डाटाग्रिड या ग्रिड व्यू) के बारे में बात कर रहे हैं जिसे आप इसे ग्रिड कहते हैं? –

उत्तर

2

क्षैतिज चेतावनी = खिंचाव मदद नहीं करता है? AFAIK ग्रिड पैनल अपने बच्चे के तत्वों को उनके सेल में उपलब्ध स्थान पर फैलाते हैं जब उनका क्षैतिज संरेखण स्ट्रैच पर सेट होता है।

+0

हां लेकिन मेरे ग्रिड का कोई स्पष्ट आकार नहीं है, इसकी कोशिकाओं को अपनी सामग्री में विस्तार करना चाहिए। समस्या यह है कि टेक्स्टबॉक्स-कंट्रोल भी इसकी सामग्री में फैलता है ... मेरे परिदृश्य के लिए यह ठीक है अगर एक कम्बोबॉक्स अपनी सामग्री तक फैलता है लेकिन टेक्स्टबॉक्स के लिए ऐसा नहीं करता है। यह ग्रिड और मेरी खिड़की को भी विस्तारित करता है क्योंकि मैं SizeToContent = WidthAndHeight का उपयोग कर रहा हूं। –

+0

तो क्या आप चाहते हैं कि आपके टेक्स्टबॉक्स में निश्चित चौड़ाई हो? क्या यह संकलन समय पर जाना जाता है? – Alex

+0

अच्छा, नहीं। इसे पूरे सेल को सेल में भरना चाहिए लेकिन इसकी टेक्स्ट-सामग्री के साथ कभी विस्तार नहीं करना चाहिए। –

1

क्या आपको पता चला कि इस समस्या को कैसे हल किया जाए?

अपनी सीमा-समस्या का उत्तर दें: आपको अपनी टेक्स्टबॉक्स-ऑब्जेक्ट को सीमा के अंदर रखना चाहिए।

<Border Background="Red" Padding="3"> 
     <Button Content="Button" /> 
    </Border> 
2

मैंने डॉकपनेल का उपयोग अपनी उपलब्ध जगह में विस्तार करने के लिए किया था। आपको मार्जिन भी सेट करना होगा:

<DockPanel> 
    <TextBox Width="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType=DockPanel}, Path=ActualWidth}" Margin="1" /> 
</DockPanel>