我有以下代码,我应该在按钮的content
中放一个随机数。但是每次按钮的内容都是相同的值0
-
这是我的C#
代码 -
public sealed partial class MainPage : Page
{
public MainPage()
{
this.InitializeComponent();
this.DataContext = this;
this.NavigationCacheMode = NavigationCacheMode.Required;
}
public int RandomNumber { get; set; }
public int GenerateRandomNumber(int min, int max)
{
Random random = new Random();
return random.Next(5,40);
}
private void ButtonNo3(object sender, RoutedEventArgs e)
{
int ans = 0;
Button obj = (Button)sender;
var selectedButton = obj.Content.ToString();
//some more code
}
这是我的XAML
代码的一部分,其中我的按钮的内容应该有一个随机数 -
<Button
x:Name="Button3"
Content="{Binding Path=RandomNumber}"
Click="ButtonNo3"
HorizontalAlignment="Left"
Margin="0,118,0,0"
VerticalAlignment="Top"
Height="37"
Width="47"/>
所以我的问题是为什么Content
的{{1}}总是Button3
应该是随机的。{/ p>
答案 0 :(得分:3)
您没有在任何地方调用GenerateRandomNumber函数(至少在所示代码中没有),因此RandomNumber属性将始终具有默认值0。
答案 1 :(得分:1)
以下应该做的伎俩
public sealed partial class MainPage : Page,INotifyPropertyChanged
{
public event PropertyChangedEventHandler PropertyChanged;
private int __RandomNumber;
public MainPage()
{
this.InitializeComponent();
this.DataContext = this;
this.NavigationCacheMode = NavigationCacheMode.Required;
}
public int RandomNumber
{
get{return _RandomNumber}
set
{
if (_RandomNumber != value){
_RandomNumber = value;
this.OnPropertyChanged("RandomNumber");//needed for binding
}
};
}
public int GenerateRandomNumber(int min, int max)
{
Random random = new Random();
RandomNumber = random.Next(5,40); //changed this line, do the assign
return RandomNumber;
}
private void ButtonNo3(object sender, RoutedEventArgs e)
{
int ans = 0;
Button obj = (Button)sender;
var selectedButton = obj.Content.ToString();
//some more code
GenerateRandomNumber(0,0); //added : generate a random number
}
我使用此代码解决了多个问题。 您永远不会生成随机数,也不会分配它。 你没有实现inotifypropertychanged所以即使你是生成一个新的数字,它也不会被绑定拾取。上面的代码没有经过测试,可能还有一些问题,但它应该给你一个想法。
答案 2 :(得分:0)
如前所述,您并未在任何地方调用GenerateRandomNumber方法。您需要将按钮的content属性设置为随机数方法返回的值。
要在click事件中设置selectedButton变量之前每次都输入不同的值。
obj.Content = GenerateRandomNumber(5,40);
var selectedButton = obj.Content;
另一方面。 GenerateRandomNumber方法的参数是无用的。你没有使用它们。你应该这样做:
private int GenerateRandonNumber( int min, int max ) {
Random random = new Random();
return random.Next( min, max );
}