嗨,我想编写一个游戏应用程序,由于这个原因,我有三个用户控件,每个用户控件都有多个按钮。假设Usercontrol1有5个按钮Usercontrol2有6个按钮,依此类推...
现在在MainPage.xaml中,我有一个名为GameCanvas的画布,在运行时取决于难度级别,我在其中填充一个用户控件,然后在下一个层次中填充另一个用户控件,依此类推GameCanvas.Children.Add(uc1);
。
现在在MainPage中,我有一个值列表
List<int> listValues = new List<int>();
我在构造函数中填充了它,因此第一次listOfValues
包含5个数字,而这5个数字我希望显示为中五个Button的Content userControl1
。
在下一个级别中,我将生成6个数字,listOfNumbers
并希望向用户显示UserControl2,并用这6个数字填充6 Buttons的内容。知道我该怎么做吗?
在构造函数中 GamePage
我创造了
uc1 = new userControl1();
uc2= new userControl12();
当我第一次加载时在构造函数中
GameCanvas.Children.Add(uc1);
我将Buttons内容作为空值获取。但是,如何用GamePage的listValues的值填充的Buttons
内容UserControl1
?
我找到了我在此问题中提出的问题的解决方案。我研究了一些东西,并从一位Microsoft技术人员那里获得了帮助,并将其实施到了我的问题中。由于代码的隐私问题,我将仅概述如何解决该问题。
我的问题是一个MainPage.xaml页和另一个userControl1.xaml页,usercontrol有一些按钮,按钮的内容将是一些在MainPage.xaml.cs中生成的listValues。
现在在用户控件中,我编写了一个代码
<Grid>
<Button Content="{Binding Path=ListOfValues[0]}" Margin="109,140,101,109" />
<Button Content="{Binding Path=ListOfValues[1]}" Margin="18,86,212,162" />
<Button Content="{Binding Path=ListOfValues[2]}" Margin="218,206,12,43" />
</Grid>
和UserControl DataContext为
<UserControl.DataContext>
<local:MainWindow />
</UserControl.DataContext>
其中“本地”是您的应用名称。UserControl中不会包含任何代码。
现在在MainPage.xaml中
<Grid Loaded="Grid_Loaded" >
<Canvas x:Name="GameCanvas" Margin="12,52,98,26" />
</Grid>
在后面的代码中,这一部分很重要。
首先定义一个属性
public List<int> ListOfValues
{
//with get, set and INotifyPropertyChanged implemented.
}
在MainPage的构造函数中写
public MainPage()
{
InitializeComponent();
this.DataContext = this;
}
并在MainPage_Loaded代码后面
private void Grid_Loaded(object sender, RoutedEventArgs e)
{
_listofValues.Add(1);
_listofValues.Add(2);
_listofValues.Add(3);
var uc1 = new UserControl1(); //
uc1.DataContext = this;
GameCanvas.Children.Add(uc1);
}
运行应用程序。您可以看到所有按钮Content为ListOfValues的顺序相同。
这是一个简单的应用程序,没有MVVM,因此任何人都可以使用Command绑定实现MVVM并编写更新的答案。希望它能对有类似要求的许多用户有所帮助。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句