将按钮名称传递给文本块

时间:2014-09-23 01:41:41

标签: c# xaml button windows-phone-8

我需要一点帮助。我在Master-Details MVVM草图上有40个按钮。如您所知,我从MainPage中点击一个按钮,它在DetailsPage上显示数据。 我需要做的是点击任何按钮(1,2,3 ... 40)并将其名称(Semana 1,2,...,40)作为详细信息页面的标题发送。 我可以通过命名每个按钮来实现这一目标

<StackPanel x:Name="Semanas1a5">
    <Button x:Name="bs1" Content="Semana 1" Click="Button_Click_1"/>
    <Button x:Name="bs2" Content="Semana 2" Click="Button_Click_2"/>
    <Button x:Name="bs3" Content="Semana 3" Click="Button_Click_3"/>
    <Button x:Name="bs4" Content="Semana 4" Click="Button_Click_4"/>
    <Button x:Name="bs5" Content="Semana 5" Click="Button_Click_5"/>
</StackPanel>

然后在导航命令中将其名称作为参数传递。

private void Button_Click_1(object sender, RoutedEventArgs e)
{   
    NavigationService.Navigate(new Uri("/DataBoundApp1;component/MainPage.xaml?hdr=" + bs1.Content, UriKind.Relative));
}

但是我认为必须通过INotifyPropertyChanged或其他任何方式更明智地做到这一点,而不是为40中的每一个写一个名字。 有人有建议吗? 谢谢!

1 个答案:

答案 0 :(得分:4)

不是为每个按钮添加Click事件,为什么不让它们共享同一个事件呢?

<StackPanel Button.Click="OnButtonClick">
      <Button Content="Semana 1"/>
      <Button Content="Semana 2"/>
      <Button Content="Semana 3"/>
      <Button Content="Semana 4"/>
      <Button Content="Semana 5"/>
</StackPanel>

然后,您可以使用RoutedEventArgs接收OriginalSource,从中可以获得Content属性!

private void OnButtonClick(object sender, RoutedEventArgs e)
{
    Button clickedButton = e.OriginalSource as Button;
    if (clickedButton != null)
        NavigationService.Navigate(new Uri("/DataBoundApp1;component/MainPage.xaml?hdr=" + clickedButton.Content, UriKind.Relative));
}