【发布时间】:2020-07-24 03:42:25
【问题描述】:
我像这样创建引脚组合布局
代码:
<StackLayout>
<Grid>
<Grid Margin="0">
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition/>
</Grid.ColumnDefinitions>
<Button x:Name="btn7" Text="7" HeightRequest="160" WidthRequest="180" Margin="10" BackgroundColor="White" FontSize="50" />
<Button x:Name="btn8" Text="8" HeightRequest="160" WidthRequest="180" Margin="10" Grid.Column="1" BackgroundColor="White" FontSize="50" />
<Button x:Name="btn9" Text="9" HeightRequest="160" WidthRequest="180" Margin="10" Grid.Column="2" BackgroundColor="White" FontSize="50"/>
<Button Text="6" HeightRequest="160" WidthRequest="180" Margin="10" Grid.Column="2" Grid.Row="1" BackgroundColor="White" FontSize="50"/>
<Button Text="5" HeightRequest="160" WidthRequest="180" Margin="10" Grid.Column="1" Grid.Row="1" BackgroundColor="White" FontSize="50" />
<Button Text="4" HeightRequest="160" WidthRequest="180" Margin="10" Grid.Row="1" BackgroundColor="White" FontSize="50" />
<Button Text="1" HeightRequest="160" WidthRequest="180" Margin="10" Grid.Row="2" BackgroundColor="White" FontSize="50" />
<Button Text="2" HeightRequest="160" WidthRequest="180" Margin="10" Grid.Row="2" Grid.Column="1" BackgroundColor="White" FontSize="50" />
<Button Text="3" HeightRequest="160" WidthRequest="180" Margin="10" Grid.Row="2" Grid.Column="2" BackgroundColor="White" FontSize="50" />
<Button Text="0" HeightRequest="160" WidthRequest="180" Margin="10" Grid.Row="3" Grid.Column="1" BackgroundColor="White" FontSize="50" />
<Button Text="Ok" HeightRequest="160" WidthRequest="180" Margin="10" Grid.Row="3" BackgroundColor="White" FontSize="50"/>
<Button Text="Clear" HeightRequest="160" WidthRequest="180" Margin="10" Grid.Row="3" Grid.Column="2" BackgroundColor="White" FontSize="50" />
</Grid>
</Grid>
</StackLayout>
我想做所有数字按钮的随机位置,所以我想要0,1,2,3,4,5,6,7,8,9,但每次访问此视图时都处于不同的位置。我从两个绑定类开始,我的结构如下:
public class PinPageViewModel : BaseViewModel
{
public PinPageViewModel()
{
_ = LoadItems();
}
public PinPageViewModel(INavigation navigation)
{
_ = LoadItems();
Navigation = navigation;
}
public INavigation Navigation { get; set; }
private async Task LoadItems()
{
try
{
}
catch (Exception ex)
{
return;
}
}
}
那么我需要做些什么来实现这一目标?我的意思是我需要在stacklayout的每个按钮中做什么,那么我如何在绑定视图模型中接收然后设置随机文本,最后是一个知道按下哪个按钮的函数?
更新
作为下面的评论,我有一些问题,每个按钮都应该有Text="{Binding Number}"(所有按钮都应该有相同的)?
那我把ViewModel改成:
public PinPageViewModel()
{
_ = LoadItems();
}
public PinPageViewModel(INavigation navigation)
{
_ = LoadItems();
Navigation = navigation;
}
public INavigation Navigation { get; set; }
private int _number;
public int Number
{
get { return _number; }
set { SetProperty(ref _number, value, nameof(Number)); }
}
private async Task LoadItems()
{
try
{
SetNumber();
}
catch (Exception ex)
{
return;
}
}
private void SetNumber()
{
int Min = 0;
int Max = 9;
Random randNum = new Random();
int[] test2 = Enumerable
.Repeat(0, 5)
.Select(i => randNum.Next(Min, Max))
.ToArray();
//How can I assign a number to each button?
}
}
如何在随机数之后为每个按钮分配按钮值?问候
【问题讨论】:
-
创建一个数组 0..9。随机化它的顺序。然后将每个元素绑定到您的 UI
-
我更新了我的问题,完成所有更改后如何绑定? @杰森