2010-09-24 25 views
27

WpF kılavuzunda kılavuz çizgileri stilini değiştirmenin bir yolu var mı? Izgarayı 4 hücreye bölmem gerekiyor. Bunu yapmak için RowDefinitions ve ColumnDefinitions'ı kullandım. Ancak hangi hücreyi ayırt edeceğimi bilmem gerekiyor, bu yüzden kılavuz çizgilerinin rengini değiştirmem gerekiyor.wpf kılavuz çizgileri - değişen stil

cevap

78

Bu sizin için yaptığınız görünüme bağlıdır. WPF'de, neredeyse her şeyi yapmanın farklı yolları vardır. İşte daha kolay olanlardan birkaçı.

kolay yolu = "True" ShowGridlines ayarlamaktır: Ayrıca, ızgaranın her hücrede bir dikdörtgen kullanabilirsiniz
alt text

: senin gibi ızgara şey verir

<Grid HorizontalAlignment="Stretch" 
      VerticalAlignment="Stretch" 
      Margin="5" 
      ShowGridLines="True"> 
     <Grid.ColumnDefinitions> 
      <ColumnDefinition Width="*" /> 
      <ColumnDefinition Width="*" /> 
     </Grid.ColumnDefinitions> 

     <Grid.RowDefinitions> 
      <RowDefinition Height="*" /> 
      <RowDefinition Height="*" /> 
     </Grid.RowDefinitions> 

     <TextBlock Grid.Column="0" 
        Grid.Row="0" 
        Text="(0,0)" /> 
     <TextBlock Grid.Column="1" 
        Grid.Row="0" 
        Text="(1,0)" /> 
     <TextBlock Grid.Column="0" 
        Grid.Row="1" 
        Text="(0,1)" /> 
     <TextBlock Grid.Column="1" 
        Grid.Row="1" 
        Text="(1,0)" /> 
    </Grid> 

farklı efektler olsun. Burada Dolgu şeffaf ve İnme Mavi şudur: Bu üretir

<Grid HorizontalAlignment="Stretch" 
     VerticalAlignment="Stretch" 
     Margin="5"> 
    <Grid.ColumnDefinitions> 
     <ColumnDefinition Width="*" /> 
     <ColumnDefinition Width="*" /> 
    </Grid.ColumnDefinitions> 

    <Grid.RowDefinitions> 
     <RowDefinition Height="*" /> 
     <RowDefinition Height="*" /> 
    </Grid.RowDefinitions> 

    <Rectangle Grid.Column="0" 
       Grid.Row="0" 
       Stroke="Blue" 
       Fill="Transparent" /> 
    <TextBlock Grid.Column="0" 
       Grid.Row="0" 
       Text="(0,0)" /> 
    <Rectangle Grid.Column="1" 
       Grid.Row="0" 
       Stroke="Blue" 
       Fill="Transparent" /> 
    <TextBlock Grid.Column="1" 
       Grid.Row="0" 
       Text="(1,0)" /> 
    <Rectangle Grid.Column="0" 
       Grid.Row="1" 
       Stroke="Blue" 
       Fill="Transparent" /> 
    <TextBlock Grid.Column="0" 
       Grid.Row="1" 
       Text="(0,1)" /> 
    <Rectangle Grid.Column="1" 
       Grid.Row="1" 
       Stroke="Blue" 
       Fill="Transparent" /> 
    <TextBlock Grid.Column="1" 
       Grid.Row="1" 
       Text="(1,0)" /> 
</Grid> 

: Alternatif
alt text

, sen Dikdörtgenler doldurup değil onlara bir Beyin verebilir:

<Grid HorizontalAlignment="Stretch" 
      VerticalAlignment="Stretch" 
      Margin="5"> 
     <Grid.ColumnDefinitions> 
      <ColumnDefinition Width="*" /> 
      <ColumnDefinition Width="*" /> 
     </Grid.ColumnDefinitions> 

     <Grid.RowDefinitions> 
      <RowDefinition Height="*" /> 
      <RowDefinition Height="*" /> 
     </Grid.RowDefinitions> 

     <Rectangle Grid.Column="0" 
        Grid.Row="0" 
        Fill="LightBlue" /> 
     <TextBlock Grid.Column="0" 
        Grid.Row="0" 
        Text="(0,0)" /> 
     <Rectangle Grid.Column="1" 
        Grid.Row="0" 
        Fill="LightYellow" /> 
     <TextBlock Grid.Column="1" 
        Grid.Row="0" 
        Text="(1,0)" /> 
     <Rectangle Grid.Column="0" 
        Grid.Row="1" 
        Fill="LightYellow" /> 
     <TextBlock Grid.Column="0" 
        Grid.Row="1" 
        Text="(0,1)" /> 
     <Rectangle Grid.Column="1" 
        Grid.Row="1" 
        Fill="LightBlue" /> 
     <TextBlock Grid.Column="1" 
        Grid.Row="1" 
        Text="(1,0)" /> 
    </Grid> 

Bu, örneğin, bir dama tahtası deseni verebilir:
alt text

Bu hiçbir şekilde kapsamlı bir cevap değildir - muhtemelen bir kitabı doldurabilirsiniz. Sadece sormak istediğin şeyi yapmanın birçok yolu olduğunu göstermek gerekiyordu, ve ihtiyacın olan tek şey varsa, bazı oldukça hızlı ve kolay çözümler var.

+1

Sonra, bir piksel genişliğinde kılavuz çizgileri nasıl elde edilir? –

+0

Ancak bu, iç kenarlıkların –

+6

@WonkotheSane çift genişliğine sahip olmasını sağlayacaktır: Bu işe yaramaz. 'StrokeThickness' basit bir 'çifte' dir. Benzer bir şey elde etmek için, "Dikdörtgen" yerine "Kenarlık" kullanın: ' –