【发布时间】:2019-05-01 09:42:55
【问题描述】:
我有几个文本框,默认值为 10,每个框有两个相邻的按钮,这些按钮用于将文本框的值增加 1 或单击后减少 1。 我知道我可以简单地为每个按钮创建一个单击事件处理程序,但我想这样做,因此该方法可能会通过从 xaml 传递它来找到指定的文本框。 如果这样做很明显,请原谅我,但我很难过。
我很喜欢绑定,但不知道如何利用它来让它发挥作用。
<Grid Background="DarkMagenta" Margin="0,0,0,-31">
<StackPanel Orientation="Vertical" HorizontalAlignment="Center" Margin="0,10, 0, 20">
<Label>Set Your Stats!</Label>
<StackPanel Orientation="Vertical" HorizontalAlignment="Left">
<Label>Strenght</Label>
<StackPanel Orientation="Horizontal">
<TextBox Margin="10,10,2,10" MinHeight="10" MaxHeight="20" MinWidth="15" MaxWidth="20">10</TextBox>
<StackPanel Orientation="Vertical" VerticalAlignment="Center">
<Button Click="Button_Click">+</Button>
<Button>-</Button>
</StackPanel>
</StackPanel>
<Label>Dexterity</Label>
<StackPanel Orientation="Horizontal">
<TextBox Margin="10,10,2,10" MinHeight="10" MaxHeight="20" MinWidth="15" MaxWidth="20">10</TextBox>
<StackPanel Orientation="Vertical" VerticalAlignment="Center">
<Button>+</Button>
<Button>-</Button>
</StackPanel>
</StackPanel>
<Label>Constitution</Label>
<StackPanel Orientation="Horizontal">
<TextBox Margin="10,10,2,10" MinHeight="10" MaxHeight="20" MinWidth="15" MaxWidth="20">10</TextBox>
<StackPanel Orientation="Vertical" VerticalAlignment="Center">
<Button>+</Button>
<Button>-</Button>
</StackPanel>
</StackPanel>
<Label>Intelligence</Label>
<StackPanel Orientation="Horizontal">
<TextBox Margin="10,10,2,10" MinHeight="10" MaxHeight="20" MinWidth="15" MaxWidth="20">10</TextBox>
<StackPanel Orientation="Vertical" VerticalAlignment="Center">
<Button>+</Button>
<Button>-</Button>
</StackPanel>
</StackPanel>
<Label>Wisdom</Label>
<StackPanel Orientation="Horizontal">
<TextBox Margin="10,10,2,10" MinHeight="10" MaxHeight="20" MinWidth="15" MaxWidth="20">10</TextBox>
<StackPanel Orientation="Vertical" VerticalAlignment="Center">
<Button>+</Button>
<Button>-</Button>
</StackPanel>
</StackPanel>
<Label>Charisma</Label>
<StackPanel Orientation="Horizontal">
<TextBox Margin="10,10,2,10" MinHeight="10" MaxHeight="20" MinWidth="15" MaxWidth="20">10</TextBox>
<StackPanel Orientation="Vertical" VerticalAlignment="Center">
<Button>+</Button>
<Button>-</Button>
</StackPanel>
</StackPanel>
</StackPanel>
<Button HorizontalAlignment="Stretch" Margin="80,0,80,0" >Continue</Button>
</StackPanel>
CS。文件方法
public partial class StatSelection : Page
{
CharacterDetails charDetails = new CharacterDetails();
public StatSelection(CharacterDetails addedDetails)
{
charDetails = addedDetails;
InitializeComponent();
}
private void IncrementBy1(object sender, RoutedEventArgs e)
{
// code for incrementing the textbox by 1
}
}
我希望该方法有一个或两个方法,这些方法可以根据每次调用时传递给该方法的文本框来找到要递增的正确文本框。
【问题讨论】:
-
看起来您并没有真正使用绑定,基本上您可以将每个按钮的单击事件分配给同一个 EventHandler 并为每个控件命名。在您的 Click EventHandler 中,您可以使用带有 name 属性的 switch 来确定单击了哪个按钮以及要修改哪个文本框的文本框名称。
标签: c# wpf xaml button textbox