1

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

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);
    }
4

2 に答える 2

1

私はそれを理解しました。最初に境界線を作成してから、境界線にグリッドを追加する必要がありました。大きな違いの1つは、境界オブジェクトを直接参照できなかったことです。「見つける」必要がありました。

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

これは完璧に機能しました....助けようとしたすべてのおかげで

于 2012-04-19T13:59:43.643 に答える
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
于 2012-04-18T05:56:23.377 に答える