2012-02-23 21 views
7

क्या वर्टिकल स्क्रॉलबार को डेटाग्रिड कॉलम/हेडर को बाईं ओर धक्का देने से रोकना संभव है? (चित्र देखें)क्या डेटाग्रिड कॉलम/हेडर को बाईं ओर धक्का देने से ऊर्ध्वाधर स्क्रॉलबार को रोकना संभव है?

वैकल्पिक रूप से, छोटे सर्कल वाले क्षेत्र को शैली बनाना संभव है, इसलिए यह सिर्फ सफेद वर्ग के रूप में दिखाई नहीं देता है?

GridView

उत्तर

1

स्क्रॉलबार के ऊपर उस आयताकार का रंग डेटाग्रिड की पृष्ठभूमि संपत्ति है। तो, उदाहरण के लिए, आप सेट कर सकते हैं यदि आप इसे पीला बनाना चाहते थे

<DataGrid Background="Yellow" ... 

इस (संभावित) का नकारात्मक पहलू है कि पृष्ठभूमि तो डेटा पंक्तियों द्वारा नहीं की गई किसी भी अंतरिक्ष सहित, अपने पूरे डेटा ग्रिड को प्रभावित करता है:

enter image description here

एक समाधान है, अगर आप प्रश्न में आयत चाहता था पीले होने के लिए, लेकिन डेटा पंक्तियों नीचे नहीं अंतरिक्ष, कि पीले एक पट्टी के कॉलम हेडर के रूप में एक ही चौड़ाई प्रदान की गई एक कस्टम ब्रश डिजाइन करने के लिए हो सकता है , और शेष के लिए सफेद।

+0

यह दो के बेहतर विकल्प था, और मैं यह देखने के लिए की तरह मैं यह करना चाहता था बनाने के लिए वहाँ में एक ढाल पृष्ठभूमि डाल सकता है । मैंने सोचा कि मैंने कोशिश की है, डेटाग्रिड पर पृष्ठभूमि बदल रहा है, लेकिन पता चला है कि मैं अपने बदलावों को प्रभावी होने से रोकने के आखिरी मिनट में ओवरराइड करता हूं। :) –

+1

ग्रेट। बस अगर आप सोच रहे हैं, तो आप एक ब्रश को दो ब्रश के साथ बना सकते हैं और दोनों के बीच दो जगहों को एक ही स्थान पर रखकर कोई ढाल नहीं कर सकते हैं। जैसा कि यहां वर्णित है: http://stackoverflow.com/questions/6546837/wpf-background-two-tone –

0

सुनिश्चित नहीं हैं कि इस मदद करता है, लेकिन एक दृष्टिकोण मैं उनके हेडर से स्तंभ को अलग करने और उन्हें अलग से पेश करने के लिए अतीत में इस्तेमाल किया है, तो।

स्तंभ परिभाषाओं संसाधनों में परिभाषित कर रहे हैं:

<UserControl.Resources> 
    <ResourceDictionary> 
     <GridViewColumnCollection x:Key="siColumnCollection"> 
      <GridViewColumn> 
       <GridViewColumn.CellTemplate> 
        <DataTemplate> 
         ... 
        </DataTemplate> 
       </GridViewColumn.CellTemplate> 
       <GridViewColumnHeader Content="Fish"/> 
      </GridViewColumn> 
    ... 

फिर हेडर और सूचीदृश्य अलग से प्रस्तुत कर रहे हैं, दोनों एक ही संसाधन संदर्भित:

<Grid> 
    <Grid.RowDefinitions> 
     <RowDefinition Height="Auto"/> 
     <RowDefinition Height="*"/> 
    </Grid.RowDefinitions> 
    <GridViewHeaderRowPresenter Columns="{StaticResource siColumnCollection}"/> 
    <ListView Grid.Row="1" ItemsSource="{Binding ViewModelList}"> 
     <ListView.Resources> 
      <DataTemplate x:Key="siNormalRowTemplate"> 
       <GridViewRowPresenter Columns="{StaticResource siColumnCollection}"/> 
      </DataTemplate> 
     </ListView.Resources> 
    </ListView> 
</Grid> 

(मैं इस XAML वादा नहीं कर सकता बिल्कुल लिखा है, लेकिन यह आपको विचार देता है)।

इस व्यवस्था का लाभ यह है कि आप हेडर और सूची के मुख्य निकाय को अलग से इलाज करने के लिए स्वतंत्र हैं। तो यदि आप GridViewHeaderRowPresenter के तुरंत बाद कुछ filler में रखना चाहते हैं, तो आप ऐसा करने के लिए स्वतंत्र हैं।

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

5

निम्नलिखित टेम्पलेट का उपयोग करें (ColumnSpan काम कर देता है):

 <Style x:Key="{x:Type DataGridColumnHeadersPresenter}" TargetType="{x:Type DataGridColumnHeadersPresenter}"> 
      <Setter Property="Grid.ColumnSpan" Value="2" /> 
      <Setter Property="Template"> 
       <Setter.Value> 
        <ControlTemplate TargetType="{x:Type DataGridColumnHeadersPresenter}"> 
         <Grid> 
          <DataGridColumnHeader IsHitTestVisible="False" Name="PART_FillerColumnHeader"/> 
          <ItemsPresenter/> 
         </Grid> 
        </ControlTemplate> 
       </Setter.Value> 
      </Setter> 
     </Style> 
+1

दिलचस्प विकल्प, यह काम करता है लेकिन आप अभी भी एक विभाजक और resizecolumn माउस सूचक देख सकते हैं। – Gerard

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

  • कोई संबंधित समस्या नहीं^_^