РЕДАКТИРОВАТЬ: я пытался
Background.SetValue(Grid.RowProperty, 1)
и
Border.Background.SetValue(Grid.RowProperty, 1)
, но получил сообщение об ошибке "Не удается установить свойство для объекта" #FFFFFFFFF ", потому что он доступен только для чтениясостояние. "
Я пытаюсь сделать генератор случайных лабиринтов в WPF.До сих пор я сделал стартовую страницу и кнопку «Пуск», где, когда вы нажимаете кнопку «Пуск», она ведет вас в лабиринт, где я хочу, чтобы он сам начал генерировать.
https://i.imgur.com/gPu0rOA.png
Я смотрел учебные пособия и т. Д. О том, как это должно быть настроено, и всей теории, лежащей в основе.
Прямо сейчас я застрял с проблемой.Я хочу, чтобы красный квадрат переместился либо в поле справа, либо под ним, а затем закрасил предыдущее поле другим цветом, чтобы красный квадрат был ячейкой, генерирующей лабиринт, а предыдущие - самим лабиринтом.Но я не могу получить разрешение на изменение позиции красного квадрата в программном коде, поскольку он доступен только для чтения.Но мне это нужно, потому что я хочу использовать петли и т. Д.
<Grid>
<Rectangle Fill="Black" HorizontalAlignment="Left" Height="356" Margin="10,10,0,0" Stroke="Black" VerticalAlignment="Top" Width="772"/>
<Button x:Name="Button1" Content="Start" HorizontalAlignment="Left" Margin="357,380,0,0" VerticalAlignment="Top" Width="74" Click="Button1_Click_1"/>
<TextBlock x:Name="Title1" HorizontalAlignment="Center" TextWrapping="Wrap" VerticalAlignment="Top" Height="70" Width="654" Margin="70,71,68,0" Foreground="White" FontSize="60" FontFamily="Impact" FrameworkElement.FlowDirection="LeftToRight" TextAlignment="Center">
<TextBlock.Triggers>
<EventTrigger RoutedEvent="FrameworkElement.Loaded">
<BeginStoryboard>
<Storyboard>
<DoubleAnimation Storyboard.TargetName="Title1" Storyboard.TargetProperty="(FrameworkElement.Height)" To="0.0" Duration="00:00:02" DecelerationRatio="0" AutoReverse="True" BeginTime="00:00:02" RepeatBehavior="Forever" />
</Storyboard>
</BeginStoryboard>
</EventTrigger>
</TextBlock.Triggers><Run Text="Random Maze Generator">
<Run.Background>
<ImageBrush/>
</Run.Background>
</Run></TextBlock>
<TextBlock x:Name="Title2" HorizontalAlignment="Left" Margin="246,254,0,0" TextWrapping="Wrap" VerticalAlignment="Top" Height="54" Width="298" Foreground="White" FontSize="30" Text="Press Start to continue"/>
<Grid Name="GridLines" ShowGridLines="False" Width="772" Height="356" Margin="10,10,10,53">
<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/>
</Grid.RowDefinitions>
<Border Name="Cell" Grid.Row="0" Grid.Column="0" Background="Red" Opacity="0" Visibility="Visible"/>
<StackPanel Name="Stack" Grid.Column="0" Grid.Row="0" HorizontalAlignment="Left"></StackPanel>
</Grid>
</Grid>
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
}
double columns = 16;
int rows = 8;
double square_width;
double square_height;
double square_area;
int current_cell;
int visited_cell;
private void Button1_Click_1(object sender, RoutedEventArgs e) //After the Start button is pressed
{
Title1.Text = String.Empty; //Hide text for Title1
Title2.Text = String.Empty; //Hide text for Title2
GridLines.ShowGridLines = true; //Changes the value for GridLines from false to true
Cell.Opacity = 100; //Changes the cell opacity from 0% to 100%
}
}
}
Красный квадрат находится в Border.Grid.Row = "0 "и Border.Grid.Column =" 0 "в Xaml, но я не знаю, как получить доступ либо.Я долго думал, что это Grid.RowProperty или Grid.ColumnProperty, с которым мне пришлось связываться, но это только для чтения.
Я довольно новичок в программировании и ДЕЙСТВИТЕЛЬНО новичок в WPF, так что это можетбудь глупым вопросом, не пытаясь никого вызвать.
Спасибо за потраченное время.