Hỏi đáp

Chia sẻ kiến thức, cùng nhau phát triển

Tạo bàn cờ bằng code behind trong wpf

20:32 23-11-2018 590 lượt xem 1 bình luận 10:04 24-11-2018

mọi người cho em hỏi khi em tạo bàn cờ 8x8 bằng code behind (mỗi ô vuông đều đặt name theo công thức name = "O" + i +j với i là số hàng, j là số cột) nhưng khi dùng hàm FindName để tìm kiếm element thì lại trả về null mặc dù debug là có ô đó với giá trị name đó trên bàn cờ (khi tạo sẵn bàn cờ trên code xaml thì tìm ra được nhưng khi tạo bằng code behind thì tìm không ra). Đây là code behind mọi người xem giúp em 

public MainWindow()
        {
            InitializeComponent();
            for (int i = 0; i < 8; i++)
            {
                for (int j = 0; j < 8; j++)
                {
                    Border border = new Border();
                    border.BorderBrush = Brushes.Black;
                    border.BorderThickness = new Thickness(1);
                    string tmp = i.ToString() + "_" + j.ToString();
                    NameScope.SetNameScope(border, new NameScope());
                    border.Name = "O" + i + j;
                    border.RegisterName(border.Name, border);
                    Grid.SetRow(border, i);
                    Grid.SetColumn(border, j);
                    banCo.Children.Add(border);
                }
            }

        }



        private void btnStart_Click(object sender, RoutedEventArgs e)
        {
            for (int i = 0; i < 8; i++)
            {
                for (int j = 0; j < 8; j++)
                {
                    Image img = new Image();
                    Uri url = new Uri("D:/AI/WpfApp1/WpfApp1/Image/quanma.jpg");
                    img.Source = new BitmapImage(url);
                    string name = "O" + i + j;
                    Border item = banCo.FindName(name) as Border;
                    item.Child = img;
                    Thread.Sleep(100);
                }
            }
        }

còn đây là code giao diện 

<Grid>
        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="auto"></ColumnDefinition>
            <ColumnDefinition></ColumnDefinition>
        </Grid.ColumnDefinitions>
        <Grid>
            <Button Content="Bắt đầu" Width="100" Height="40" Name="btnStart" Padding="1" Click="btnStart_Click"/>
        </Grid>
        <Grid Name="banCo" Grid.Column="1">
            <Grid.ColumnDefinitions>
                <ColumnDefinition></ColumnDefinition>
                <ColumnDefinition></ColumnDefinition>
                <ColumnDefinition></ColumnDefinition>
                <ColumnDefinition></ColumnDefinition>
                <ColumnDefinition></ColumnDefinition>
                <ColumnDefinition></ColumnDefinition>
                <ColumnDefinition></ColumnDefinition>
                <ColumnDefinition></ColumnDefinition>
            </Grid.ColumnDefinitions>
            <Grid.RowDefinitions>
                <RowDefinition></RowDefinition>
                <RowDefinition></RowDefinition>
                <RowDefinition></RowDefinition>
                <RowDefinition></RowDefinition>
                <RowDefinition></RowDefinition>
                <RowDefinition></RowDefinition>
                <RowDefinition></RowDefinition>
                <RowDefinition></RowDefinition>
            </Grid.RowDefinitions>
        </Grid>
    </Grid>

 

Bình luận

Để bình luận, bạn cần đăng nhập bằng tài khoản Howkteam.

Đăng nhập
K9 SuperAdmin, KquizAdmin, KquizAuthor đã bình luận 10:04 24-11-2018

WPF không ai làm theo cách này hết bạn ơi. WPF thì bạn chỉ cần binding là lòi ra cả cái bàn cờ rồi ak. Hãy tưởng tượng bàn cờ là 1 Danh sách. mỗi phần tử của danh sách lại là 1 danh sách nữa. vậy là bạn có thể binding ra cái bàn cờ rồi đó. còn code của bạn nhìn dô không biết bắt lỗi đâu

Câu hỏi mới nhất