简体   繁体   English

在运行时禁用/启用应用程序栏按钮,并更改事件文本(Windows Phone)

[英]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. 代码的这一部分是事件TextChanged,以启用应用程序栏中的按钮。

C#: 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: 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. 在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. 完成所有这些操作后,您就可以通过代码创建自己的ApplicationBar 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. 在TextChanged事件中,您还可以访问ApplicationBar控件。 In these events you can place above code to change the ApplicationBarButton. 在这些事件中,您可以放置​​上面的代码来更改ApplicationBarButton。 Hope this clears things up for you! 希望这可以为您清除一切! More reading and info: 更多阅读和信息:

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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