2012-04-17 22 views
1

私は境界線に配置する必要があるグリッドを持っています.XAML経由でこれを行うのは簡単です しかし、C#でどうすればいいですか? 私が今までに見つけたものはすべて、各セルの周りに境界線を追加したいと考えています。Silverlight:グリッドの周りに境界線を追加する

XAMLと同じように見えるようにする必要があります。助けてください!私は、XAMLはここに正しく投稿することができません

:ここ

<Border Grid.Column="1" 
     Grid.Row="0" 
     Background="AliceBlue" 
     BorderBrush="Black" 
     BorderThickness="4" 
     x:Name="Side6" 
     Visibility="Collapsed"> 
    <UIElement.Projection> 
     <PlaneProjection RotationY="-90" /> 
    </UIElement.Projection> 
    <Grid> 
     <Grid.ColumnDefinitions> 
      <ColumnDefinition Width="100"></ColumnDefinition> 
      <ColumnDefinition Width="100"></ColumnDefinition> 
      <ColumnDefinition Width="100"></ColumnDefinition> 
     </Grid.ColumnDefinitions> 
     <Grid.RowDefinitions> 
      <RowDefinition Height="100"></RowDefinition> 
      <RowDefinition Height="100"></RowDefinition> 
      <RowDefinition Height="100"></RowDefinition> 
     </Grid.RowDefinitions> 
     <Button Grid.Column="2" Grid.Row="1" Click="RotateRight_Click"> 
      <Button.Content> 
       <StackPanel> 
        <TextBlock HorizontalAlignment="Center">Rotate Right</TextBlock> 
        <TextBlock HorizontalAlignment="Center">To</TextBlock> 
        <TextBlock HorizontalAlignment="Center">Side 4</TextBlock> 
       </StackPanel> 
      </Button.Content> 
     </Button> 
     <Button Grid.Column="0" Grid.Row="1" Click="RotateLeft_Click"> 
      <Button.Content> 
       <StackPanel> 
        <TextBlock HorizontalAlignment="Center">Rotate Left</TextBlock> 
        <TextBlock HorizontalAlignment="Center">To</TextBlock> 
        <TextBlock HorizontalAlignment="Center">Side 2</TextBlock> 
       </StackPanel> 
      </Button.Content> 
     </Button> 
     <TextBlock HorizontalAlignment="Center" 
        VerticalAlignment="Center" 
        Grid.Column="1" 
        Grid.Row="1" 
        Text="Side 6"> 
     </TextBlock> 
    </Grid> 
</Border> 

は、私が使用しているC#のコードで、多分あなたは私が間違っているのかを見ることができますか?

public static void panelMain(string strPassGridName, System.Windows.Media.Color mcPassColor, 
int intRowProperty, int intColumnProperty, Visibility vVisibility, 
string[] strButtonTitles, Grid passLayoutRoot, Canvas passCanvas) 
    { 
     Grid panelGrid = new Grid(); 

      panelGrid.Name = strPassGridName; 
      panelGrid.Background = new SolidColorBrush(mcPassColor); 

      panelGrid.SetValue(Grid.RowProperty, intRowProperty); 
      panelGrid.SetValue(Grid.ColumnProperty, intColumnProperty); 
      panelGrid.Visibility = vVisibility; 

     RowDefinition row1 = new RowDefinition(); 
         row1.Height = new GridLength(100, GridUnitType.Auto); 
      panelGrid.RowDefinitions.Add(row1); 

     ColumnDefinition column1 = new ColumnDefinition(); 
         column1.Width = new GridLength(100); 
      panelGrid.ColumnDefinitions.Add(column1); 


     passLayoutRoot.Children.Add(panelGrid); 
    } 
+0

義務を手助けしようとしているすべての 感謝を働いた

Border findBorder = passLayoutRoot.FindName("bd" + strPassGridName) as Border; if (findBorder == null) { } else { findBorder.Child = panelGrid; } 

「それを見つける」ために必要なあなたはC#で何を試してみましたか? – Robaticus

+0

[Child](http://msdn.microsoft.com/en-us/library/system.windows.controls.decorator.child.aspx)プロパティが見えましたか? – gliderkite

+0

はい、それはすでに子供であることがわかっています – user1339386

答えて

0

あなたは、以下のように

 Border gridBorder = new Border(); 
     gridBorder.BorderBrush = new SolidColorBrush(Colors.Black); 
     gridBorder.BorderThickness = new Thickness(4); 
     gridBorder.Child = new Grid(); //Your grid here 
     LayoutRoot.Children.Add(border); // ParentGrid(layout) holding the border 
+0

申し訳ありませんがうまくいきませんでした。「要素はすでに別の要素の子です」最後の行を少し変更した場合、グリッド内の1つの四角形に境界線があります。 境界線gridBorder = new Border(); gridBorder.BorderBrush = new SolidColorBrush(Colors.Black); gridBorder.BorderThickness = new Thickness(4); //gridBorder.Child = panelGrid; //グリッドはここにあります panelGrid.Children.Add(gridBorder); – user1339386

+0

最後の行panelGrid.Children.Add(gridBorder);仕事はありません。以下のように、gridBorderをルートグリッドの子として追加する必要があります。 LayoutRoot.Children.Add(border); – smhnkmr

+0

何かが欠落しているはずですが、グリッドを囲む枠線はどうしたら得られますか?この行(gridBorder.Child = new Grid();)は、新しいグリッドを追加するように言いますが、作成されているグリッドへの参照を作成するには – user1339386

1

を行うことができます私は国境にグリッドを追加し、最初の境界線を作成するために必要な、それを考え出しました。ことができます。 一つの大きな違いは、私が直接ボーダーオブジェクトを参照することができなかったということですが、私はこれは....完全

関連する問題