2010-10-26 17 views
7

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

यदि मैं जो मांग रहा हूं वह संभव नहीं है, तो कोई जवाब स्वीकार करेगा यदि कोई व्यक्ति आधिकारिक और संपूर्ण स्पष्टीकरण प्रदान कर सकता है। इसके अलावा मैं इस बात पर जोर देना चाहूंगा कि कंट्रोल टेम्पलेट को फिर से परिभाषित करने के बारे में मुझे एक व्याख्यान में दिलचस्पी नहीं है क्योंकि मैं अंतिम उपाय के रूप में इसका इलाज कर रहा हूं और मुझे पहले से ही यह पता है कि इसे कैसे पूरा किया जाए।

+0

क्या आपने कभी यह पता लगाया कि यह कैसे करें? यह भी मुझे परेशान कर रहा है। –

+0

अभी तक, अगर मैं ऐसा करता हूं तो मैं अपनी पोस्ट को अपडेट करना सुनिश्चित कर दूंगा। – jpierson

उत्तर

12

aero.normalcolor के लिए शैली MenuItem सेपरेटर इस तरह दिखता है:

<Style x:Key="{x:Static MenuItem.SeparatorStyleKey}" 
     TargetType="{x:Type Separator}"> 
    <Setter Property="Template"> 
     <Setter.Value> 
      <ControlTemplate TargetType="{x:Type Separator}"> 
       <Grid SnapsToDevicePixels="true" Margin="0,6,0,4"> 
        <Rectangle Height="1" 
           Margin="30,0,1,1" 
           Fill="#E0E0E0"/> 
        <Rectangle Height="1" 
           Margin="30,1,1,0" 
           Fill="White"/> 
       </Grid> 
      </ControlTemplate> 
     </Setter.Value> 
    </Setter> 
</Style> 

आप अपने App.xaml को यह शैली को कॉपी करें और अपनी प्राथमिकताओं का मिलान करने के लिए Margin="0,6,0,4" बदलने के लिए की आवश्यकता होगी।

+0

यह शायद सबसे स्वीकार्य समाधान है और किसी भी नियंत्रण के अपरिवर्तनीयता को बदलने के बारे में सबसे मानक तरीका है जो उजागर गुणों के माध्यम से लीवर की पेशकश की जाती है, इसलिए मैं इसे स्वीकार कर रहा हूं। मेरे मामले में मैं ElementHost के उपयोग के माध्यम से WinForms ऐप में WPF नियंत्रण एम्बेड कर रहा हूं, इसलिए app.xaml की अवधारणा लागू नहीं होती है। साथ ही एक और नोट के रूप में, अंतर्निहित नियंत्रण टेम्पलेट को संशोधित किए बिना मैंने इसे एक तरह से पाया है मूल रूप से विभाजक नियंत्रण पर या शैली के माध्यम से नकारात्मक मार्जिन सेट करना है। – jpierson

1

मैं हमेशा नकारात्मक मार्जिन का उपयोग करता हूं: <Separator Margin="0,-4" />