2013-08-11 6 views
23

में टेक्स्ट संरेखण मैं WPF द्वारा प्रोग्रामिंग कर रहा हूं। मुझे डेटाग्रिड नियंत्रण में, कोशिकाओं की केंद्र सामग्री बनाने का एक तरीका चाहिए। मैं इस कोड का भी उपयोग करता हूं:डेटाग्रिड

<DataGrid x:Name="dg1" HorizontalAlignment="Left" Margin="10,10,0,0" 
    VerticalAlignment="Top" Height="360" Width="498" 
    FontFamily="2 Badr" FontSize="18" 
    AlternatingRowBackground="LightCoral" FlowDirection="RightToLeft" 
    HorizontalContentAlignment="Center" VerticalContentAlignment="Center" 
    Background="{x:Null}"/> 

क्या गलत है?

मैं क्या कर सकता हूं?

कृपया मुझे अपने जवाब XAML (बस XAML) में दें।

<Window.Resources> 
    <Style TargetType="DataGridCell"> 
     <Setter Property="HorizontalAlignment" Value="Center" /> 
    </Style> 
</Window.Resources> 

संपादित:

+4

डुप्लिकेट: http://stackoverflow.com/questions/6072093/how-to-center-the-content-of-cells-in-a-data-grid –

+0

[WPF DataGrid में टेक्स्ट संरेखण] का संभावित डुप्लिकेट (http://stackoverflow.com/questions/720732/text-alignment-in-a-wpf-datagrid) – bouvierr

उत्तर

62

आप शायद सिर्फ एक शैली बनाने DataGridCell शैली

<DataGrid> 
     <DataGrid.Columns> 
      <DataGridTextColumn> 
       <DataGridTextColumn.ElementStyle> 
        <Style TargetType="TextBlock"> 
         <Setter Property="HorizontalAlignment" Value="Center" /> 
        </Style> 
       </DataGridTextColumn.ElementStyle> 
      </DataGridTextColumn> 
     </DataGrid.Columns> 
    </DataGrid> 
+0

(Lai32290 तक) यह मेरा जवाब नहीं है। आपका उत्तर मेरे डेटासेट में एक कॉलम जोड़ता है और मेरी सेल सामग्री में से एक भी केंद्र सेट नहीं करता है। –

+3

यह उत्तर मुझे सही दिखता है - कम से कम एक कॉलम जोड़ने के बिना सेल सामग्री को सही ढंग से गठबंधन किया गया है या नहीं? – Andrew

+0

(बाबाक को) क्षमा करें, वह कोड वास्तव में काम नहीं किया है, मैंने अपना कोड संपादित कर लिया है, कृपया – Lai32290

3

सेट की जरूरत है।

+1

मेरे कोड में इसका उपयोग कैसे करें? कृपया और बताएं। मैं xaml –

+1

में नया हूं आप अपनी विंडो – Daniel

+0

के संसाधन में शैली जोड़ सकते हैं मेरे लिए अच्छा नहीं है क्योंकि तब आपकी टेक्स्टबॉक्स सीमा/आकार शायद सेल आकार को भर नहीं रहा है।तो मैं Lai32290 से जवाब पसंद करते हैं – Nelly

1

मामले में आप के लिए एक DataGridTemplateColumn

<DataGridTemplateColumn SortMemberPath="DataDiNascita" Header="Data di nascita" IsReadOnly="False"> 
       <DataGridTemplateColumn.CellEditingTemplate>       
        <DataTemplate> 
         <DatePicker SelectedDate="{Binding Path=DataDiNascita,Mode=TwoWay}" VerticalAlignment="Center" HorizontalAlignment="Left">         
         </DatePicker>       
        </DataTemplate> 
       </DataGridTemplateColumn.CellEditingTemplate> 
       <DataGridTemplateColumn.CellTemplate>       
        <DataTemplate> 
         <TextBlock Text="{Binding Path=DataDiNascita,Mode=TwoWay,StringFormat=\{0:dd/MM/yyyy\}}" VerticalAlignment="Center" HorizontalAlignment="Left">        
         </TextBlock> 
        </DataTemplate> 
       </DataGridTemplateColumn.CellTemplate> 
      </DataGridTemplateColumn> 
1

में दिनांक केंद्रित करने के लिए चाहते हैं सभी स्तंभ

<Window.Resources> 
     <Style TargetType="DataGridColumnHeader"> 
      <Setter Property="HorizontalAlignment" Value="Stretch"/> 
      <Setter Property="HorizontalContentAlignment" Value="Center"/> 
     </Style> 
</Window.Resources> 
3

अन्य उत्तर में उल्लेख किया है प्रभावित करते हैं:

<Setter Property="HorizontalAlignment" Value="Center" /> 

HorizontalAlignment

यह पृष्ठभूमि जैसी किसी भी अन्य शैलियों को प्रभावित करेगा।

<Setter Property="TextAlignment" Value="Center" /> 

textalign

5

जो लोग एक कस्टम XAML शैली से VB.NET में केवल एक गतिशील DataGrid स्तंभ प्रारूप में तैयार करना के लिए::

Application.xaml में केवल पाठ को केंद्रित करने के बजाय का उपयोग करें :

<Application.Resources> 
    <ResourceDictionary> 
     <Style x:Key="DataGridCellCentered" TargetType="DataGridCell"> 
      <Setter Property="TextBlock.TextAlignment" Value="Center" /> 
     </Style> 
    </ResourceDictionary> 
</Application.Resources> 

VB.NET कोड में:

Me.MyDataGrid.Columns(5).CellStyle = TryFindResource("DataGridCellCentered") 

सम्मान!