简体   繁体   中英

Disable/Enable applicationbar Button in runtime with event textchanged (Windows Phone)

In this part of the code is the event TextChanged to enable the button in te applicationbar.

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"/>

The application bar doesn't support some basic features when it is set in XAML. You'll have to create the bar and buttons and/or menu items through code.

Here's an example how you can create the bar and add controls to it. The controls can then be accessed later from code:

//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)
{
}

When all this is done, you've created your own ApplicationBar through code. Now you can change the properties from code, like this:

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

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

//or shorter:
theButton.IsEnabled = someCondition

This is just an example. In the TextChanged events you can also access the ApplicationBar controls. In these events you can place above code to change the ApplicationBarButton. Hope this clears things up for you! More reading and info:

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM