0

在这部分代码中是事件 TextChanged 以启用应用程序栏中的按钮。

C#:

private void Textbox_TextChanged(object sender, EventArgs e)
{
    ApplicationBarIconButton btn_guardar = ApplicationBar.Buttons[0] as applicationBarIconButton;

    if (!string.IsNullOrEmpty(txt_nom_usuario.Text) && !string.IsNullOrEmpty(txt_edad_usuario.Text) && !string.IsNullOrEmpty(txt_peso_usuario.Text))
    {
        btn_guardar.IsEnabled = true;
    }
    else
        btn_guardar.IsEnabled = false; 
}

XAML:

<phone:PhoneApplicationPage.ApplicationBar>
    <shell:ApplicationBar Mode="Default" IsVisible="True">
        <shell:ApplicationBarIconButton x:Name="btn_guardar" IconUri="/icons/appbar.save.rest.png" Text="Guardar" Click="btn_guardar_Click" IsEnabled="False" />
        <shell:ApplicationBarIconButton x:Name="btn_atras" IconUri="/icons/appbar.back.rest.png" Text="Atrás" Click="btn_atras_Click" />
    </shell:ApplicationBar>
</phone:PhoneApplicationPage.ApplicationBar>

<TextBlock x:Name="lbl_ingresanombre" Height="39" Margin="60,28,0,0" TextWrapping="Wrap" HorizontalAlignment="Left" VerticalAlignment="Top" Width="248" FontSize="29.333" FontFamily="{StaticResource Helvetica}"><Run Text="Ingresa "/><Run Text="tu nombre"/></TextBlock>
<TextBox x:Name="txt_nom_usuario" Height="63" Margin="47,58,69,0" TextWrapping="Wrap" Text="&#xa;" FontSize="21.333" VerticalAlignment="Top" IsEnabled="True" />

<TextBlock x:Name="lbl_edad" Height="38" Margin="60,117,0,0" TextWrapping="Wrap" Text="Ingresa tu edad" VerticalAlignment="Top" FontSize="29.333" HorizontalAlignment="Left" FontFamily="{StaticResource Helvetica}"/>
<TextBox x:Name="txt_edad_usuario" InputScope="TelephoneLocalNumber" Height="63" TextWrapping="Wrap" Text="&#xa;" FontSize="21.333" Margin="47,147,69,0" VerticalAlignment="Top" MaxLength="3" />

<TextBlock x:Name="lbl_peso" Height="42" Margin="60,0,0,178" TextWrapping="Wrap" Text="Peso" HorizontalAlignment="Left" VerticalAlignment="Bottom" Width="74" FontSize="29.333" d:LayoutOverrides="HorizontalAlignment" FontFamily="{StaticResource Helvetica}"/>
<TextBox x:Name="txt_peso_usuario" InputScope="TelephoneLocalNumber" Margin="47,0,69,125" TextWrapping="Wrap" Text="&#xa;" FontSize="21.333" Height="63" VerticalAlignment="Bottom"/>
4

1 回答 1

1

应用程序栏在 XAML 中设置时不支持某些基本功能。您必须通过代码创建栏和按钮和/或菜单项。

这是一个如何创建栏并向其添加控件的示例。然后可以稍后从代码中访问这些控件:

//button
var appBarButton = new ApplicationBarIconButton
{
    IconUri = new Uri("/Images/YourImage.png", UriKind.Relative),
    Text = "click me"
};
appBarButton.Click += new EventHandler(appBarButton_Click);

//menu item
ApplicationBarMenuItem appBarMenuItem = new ApplicationBarMenuItem
{
    Text = "a menu item"
}
appBarMenuItem.Click += new EventHandler(appBarMenuItem_Click);

//application bar

//Note that this is not a variable declaration
//'ApplicationBar' is a property of 'PhoneApplicationPage'

ApplicationBar = new ApplicationBar();
ApplicationBar.Buttons.Add(appBarButton);
ApplicationBar.MenuItems.Add(appBarMenuItem);

//the events
private void appBarButton_Click(object sender, EventArgs e)
{
}

private void appBarMenuItem_Click(object sender, EventArgs e)
{
}

完成所有这些后,您就通过代码创建了自己的ApplicationBar代码。现在您可以从代码中更改属性,如下所示:

var theButton = (ApplicationBarIconButton)ApplicationBar.Buttons[0];

if(someCondition)
{
    theButton.IsEnabled = true;
}
else
{
    theButton.IsEnabled = false;
}

//or shorter:
theButton.IsEnabled = someCondition

这只是一个例子。在 TextChanged 事件中,您还可以访问 ApplicationBar 控件。在这些事件中,您可以放置​​上面的代码来更改 ApplicationBarButton。希望这可以为您解决问题!更多阅读和信息:

于 2014-05-28T07:16:30.437 回答