2009-09-14 7 views
12

क्या WPF में किसी अन्य नियंत्रण (यानी एक बटन) इनलाइन और टैब हेडर के दाईं ओर स्थित करने का कोई आसान तरीका है?WPF TabControl पर - क्या मैं टैब हेडर के बगल में सामग्री जोड़ सकता हूं?

वेब में, मैं इसे पूरा करने के लिए एक फ्लोट या पूर्ण स्थिति का उपयोग करूंगा। A control alongside of WPF Tabs http://www.jonkragh.com/images/text-next-to-tabs.png

धन्यवाद:

इस तस्वीर में लाल रेखा है कि मैं क्या पाने के लिए कोशिश कर रहा हूँ है! जॉन

+11

सबसे उत्कृष्ट स्केच कलाकृति के लिए +1;) –

+0

धन्यवाद स्टीफन! वाकॉम टैबलेट और वनोट के साथ बनाया गया! –

+0

दिलचस्प - मैं सबसे बढ़िया वनोट दैनिक और तीव्रता से भी उपयोग कर रहा हूं, लेकिन एक चीज जिसे मैंने वर्षों तक प्रयास करने में कामयाब नहीं किया है, इस टूलचैन में एक टैबलेट जोड़ रहा है, हालांकि वनोट वास्तव में आगे बढ़ने के लिए कलम इनपुट मांग रहा है बिना किसी प्रभावशाली फीचर सेट - आपकी टिप्पणी आखिरकार इसे ट्रिगर कर सकती है, धन्यवाद :) –

उत्तर

9

यह करने के लिए मजबूत तरीके के रूप में मैं अपने ActiveAwareCommand sample में बंद करें बटन के लिए किया था के लिए पुन: टेम्पलेट TabControl है:

<ControlTemplate x:Key="TabControlTemplate" TargetType="TabControl"> 
    <Grid ClipToBounds="true" SnapsToDevicePixels="true" KeyboardNavigation.TabNavigation="Local"> 
     <Grid.ColumnDefinitions> 
      <ColumnDefinition x:Name="ColumnDefinition0"/> 
      <ColumnDefinition x:Name="ColumnDefinition1" Width="0"/> 
     </Grid.ColumnDefinitions> 
     <Grid.RowDefinitions> 
      <RowDefinition x:Name="RowDefinition0" Height="Auto"/> 
      <RowDefinition x:Name="RowDefinition1" Height="*"/> 
     </Grid.RowDefinitions> 
     <Grid Panel.ZIndex="1"> 
      <Grid.ColumnDefinitions> 
       <ColumnDefinition Width="*"/> 
       <ColumnDefinition Width="Auto"/> 
      </Grid.ColumnDefinitions> 
      <TabPanel Margin="2,2,2,0" x:Name="HeaderPanel" IsItemsHost="true" KeyboardNavigation.TabIndex="1"/> 
      <Button Grid.Column="1" Command="{Binding DataContext.CloseCommand, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type UserControl}}}" Style="{StaticResource {x:Static ToolBar.ButtonStyleKey}}">X</Button> 
     </Grid> 
     <Border x:Name="ContentPanel" Grid.Column="0" Grid.Row="1" BorderBrush="#D0CEBF" BorderThickness="0,0,1,1" KeyboardNavigation.DirectionalNavigation="Contained" KeyboardNavigation.TabIndex="2" KeyboardNavigation.TabNavigation="Local"> 
      <Border BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}"> 
       <Border Background="{TemplateBinding Background}"> 
        <Grid x:Name="PART_ItemsHolder"/> 
       </Border> 
      </Border> 
     </Border> 
    </Grid> 
</ControlTemplate> 

सूचना कैसे TabPanel और Button ओवरलैप कभी नहीं कर सकते हैं। परिणाम:

alt text

+1

धन्यवाद! यह मुझे सही दिशा में इंगित किया। मैं टैब के लिए डिफ़ॉल्ट शैली/टेम्पलेट की प्रतिलिपि बना रहा हूं (ब्लेंड का उपयोग करके) और फिर मेरी शैली/टेम्पलेट बनाया है जैसे कि एड टैब बटन हमेशा अंतिम टैब के बगल में है। अगर कोई दिलचस्पी लेता है तो मैं उस कोड को पोस्ट कर सकता हूं। –

+0

मैं इस टेम्पलेट को Silverlight4 में समायोजित करने की कोशिश कर रहा हूं और यह उतना आगे नहीं है जितना दिख सकता है। क्या आपके पास इस टेम्पलेट का सिल्वरलाइट संस्करण बनाने का समय है? :) – Houman

0

वेब पर आप इसे कैसे करेंगे, इस तरह आप केवल ग्रिड के अंदर टैब नियंत्रण और फ़्लोटिंग नियंत्रण डाल सकते हैं और इसे सही जगह पर लाने के लिए फ़्लोटिंग नियंत्रण के मार्जिन सेट कर सकते हैं। आप ग्रिड और फ़्लोटिंग नियंत्रण को रखने के लिए कैनवास तत्व का भी उपयोग कर सकते हैं और कैनवास सेट कर सकते हैं। लिफ्ट और कैनवास। टॉप।

यदि टैब संकलित समय पर निर्धारित नहीं हैं, तो आपको प्रत्येक टैब की चौड़ाई को गतिशील रूप से मापने की आवश्यकता हो सकती है।

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