2009-04-06 17 views
44

में टेक्स्ट संरेखण मैं WPF DataGrid में कॉलम डेटा को केंद्र में कैसे संरेखित कर सकता हूं?एक WPF डेटाग्रिड

+1

सिल्वरलाइट लिए, देखें [इस उत्तर] (http://stackoverflow.com/questions/7916226/column-aligment-in-a-silverlight-datagrid/7916301#7916301)। –

उत्तर

40

यह बारीकियों को जानने के बिना कहना मुश्किल है, लेकिन यहां एक DataGridTextColumn कि केंद्रित है है:

<wpf:DataGridTextColumn Header="Name" Binding="{Binding Name}" IsReadOnly="True"> 
    <wpf:DataGridTextColumn.CellStyle> 
     <Style> 
      <Setter Property="FrameworkElement.HorizontalAlignment" Value="Center"/> 
     </Style> 
    </wpf:DataGridTextColumn.CellStyle> 
</wpf:DataGridTextColumn> 
+0

दिसंबर 2010 में भी मेरे लिए बहुत अच्छा काम किया! – ErocM

+6

यह दृष्टिकोण मेरे लिए काम नहीं किया। पाठ केंद्रित था, लेकिन सेल चौड़ाई अब अपने शीर्षलेख के साथ मेल नहीं खाती है। मोहम्मद के समाधान ने सबसे अच्छा काम किया। –

+1

जैसा कि किफ ने कहा, सेल भी स्थानांतरित हो रहा है। आपको टेक्स्टब्लॉक को मोहम्मद ए फदिल उदाहरण के रूप में लक्षित करना होगा। –

1

ठीक है, मैं frameworkElement दृष्टिकोण का इस्तेमाल किया लेकिन वहाँ एक अजीब व्यवहार जब आप पंक्ति हाइलाइट करने के लिए प्रयास करें था।

मैंने इस thread में WPF डेटाग्रिड संरेखण का एक और उदाहरण दिया है!

74

यदि आप उपयोग कर रहे हैं DataGridTextColumn आप निम्नलिखित कोड का उपयोग कर सकते हैं:

<Style TargetType="DataGridCell"> 
    <Style.Setters> 
      <Setter Property="TextBlock.TextAlignment" Value="Center" /> 
    </Style.Setters> 
</Style> 
+5

यह सबसे अच्छा तरीका है - सेल पर संरेखण की स्थापना का कारण बनता है सेल इसकी चौड़ाई, जब पंक्ति – bruceboughton

+1

चयन किया जाता है शुरू में यह मेरे लिए काम नहीं किया जो अजीब लग रहा है को भरने के लिए नहीं है, लेकिन थोड़ा और परीक्षण के बाद और में कुछ त्रुटियों को ठीक करने मेरी कोड इस समाधान महान काम किया। धन्यवाद! – BrianVPS

+0

@ ब्रायन वीपीएस स्वागत है, मुझे यह सुनकर खुशी हो रही है: डी –

12

केंट Boogaart के लिए +1। मैं यह कर समाप्त हो गया है, जो कोड थोड़ा अव्यवस्था कम मिलती है (और मुझे कई स्तंभों पर संरेखण का उपयोग करने के लिए सक्षम बनाता है):

<Resources> 
     <Style x:Key="NameCellStyle" TargetType="DataGridCell"> 
       <Setter Property="HorizontalAlignment" Value="Center" /> 
     </Style> 
</Resources> 


<DataGrid.Columns>       
    <DataGridTextColumn Header="Name" CellStyle="{StaticResource NameCellStyle}" Binding="{Binding Name}"/>        
    // .. other columns   
</DataGrid.Columns> 
+0

+1, लेकिन मेरे लिए 'क्षैतिज एलाइनमेंट' काम नहीं करता है जबकि 'क्षैतिज सामग्री' संरेखण करता है। – Emmanuel

0

मेरा पसंदीदा समाधान है:

<DataGridTextColumn Header="My Column" Binding="{Binding MyDBValue}" Width="100" > 
<DataGridTextColumn.CellStyle> 
     <Style> 
       <Setter Property="FrameworkElement.HorizontalAlignment" Value="Center"/> 
     </Style> 
</DataGridTextColumn.CellStyle> 

4

या पीछे कोड में:

grid.CellStyle = newCellStyle(); 

public static Style newCellStyle() 
{ 
    //And here is the C# code to achieve the above 
    System.Windows.Style style = new Style(typeof(DataGridCell)); 
    style.Setters.Add(new System.Windows.Setter 
    { 
     Property = Control.HorizontalAlignmentProperty, 
     Value = HorizontalAlignment.Center 
    }); 
    return style; 
} 
14

मैंने हुट्टेहिल के समाधान से शुरुआत की। दुर्भाग्य से, यह अभी तक मेरे लिए काम नहीं किया है। मैं उसका जवाब बदलाव और (समाधान दाईं ओर पाठ संरेखित करने के लिए है) इस के साथ आया था:

<Resources> 
    <Style x:Key="RightAligned" TargetType="TextBlock"> 
     <Setter Property="HorizontalAlignment" Value="Right"/> 
    </Style> 
</Resources> 

आप देख सकते हैं, मैं एक TextBlock, नहीं DataGridCell के लिए शैली लागू होता है।

और फिर मैं तत्व शैली, नहीं सेल शैली स्थापित करने के लिए किया था।

ElementStyle="{StaticResource RightAligned}" 
+1

कृपया ध्यान दें कि इस 'DataGridTextColumn' –

+0

@JP Hellemons साथ काम नहीं करता: मेरे लिए यह' DataGridTextColumn' – Mikhail

2

मुझे सेल को स्थानांतरित करने और स्वीकार किए गए उत्तर का उपयोग करके फंकी दिखने में समस्याएं आईं। मुझे पता है कि यह देर हो चुकी है, लेकिन उम्मीद है कि मेरे निष्कर्ष किसी की मदद करेंगे। मैं का उपयोग करें:

<DataGridTextColumn.ElementStyle> 
    <Style> 
      <Setter Property="FrameworkElement.HorizontalAlignment" Value="Center"/> 
    </Style> 

बल्कि CellStyle से। ,

var MyStyle = new Style(typeof(DataGridCell)) { 
    Setters = { 
     new Setter(TextBlock.TextAlignmentProperty, TextAlignment.Center) 
    } 
}; 

Style लागू करने के लिए DataGrid की CellStyle संपत्ति, उदा सेट:

7

यहाँ @ MohammedAFadil के XAML जवाब है, सी # के पीछे कोड में बदला

var MyGrid = new DataGrid() { 
    CellStyle = MyStyle 
}; 
+1

सरल और साफ के साथ काम किया! +1 :) बस मुझे क्या चाहिए। –

0

धन्यवाद @ मोहम्मदएफैडिल के एक्सएएमएल उत्तर को परिवर्तित करने के लिए डैनी बेकेट धन्यवाद, सी # कोड में परिवर्तित हो गया। मेरे सभी डेटाग्रिड गतिशील रूप से स्थापित किए गए हैं, इसलिए जब भी मैं कुछ भी बदल सकता हूं।

एक खाली डेटाग्रिड स्थापित करने के लिए, इसमें कुछ भी नहीं है और फिर इसे डेटा से बांधें, बस अपना डेटाग्रिड लें।कॉलम

 var centerTextSetter = new Style(typeof(DataGridCell)) 
     { 
      Setters = { new Setter(TextBlock.TextAlignmentProperty, TextAlignment.Center) } 
     }; 
     DgDbNames.Columns.Add(new DataGridTextColumn() 
     { 
      Header = "Db Name", 
      Binding = new System.Windows.Data.Binding("DbName"), 
      IsReadOnly = true, 
      Width = new DataGridLength(0.2, DataGridLengthUnitType.Star), 
      CellStyle = centerTextSetter 
     }); 
संबंधित मुद्दे