Je suis certes nouveau sur la scène de développement d'applications WP7. J'avais trouvé une vidéo montrant comment faire quelque chose de similaire il y a quelque temps, mais je n'arrive plus à la localiser. Essentiellement je veux changer le contenu d'une page XAML basée sur une sélection par l'utilisateur. Pour un exemple simple, il pourrait y avoir cinq boutons numérotés de 1 à 5. En cliquant sur celui qui créerait autant de zones de texte sur une page. Est-il possible d'indiquer au bouton du gestionnaire d'événements de coller du code XAML sur la page? Est-ce que cela fonctionne de la même manière que les feuilles CSS en HTML? Merci beaucoup pour votre temps et aidez-moi avec cette question! Même en me montrant un tutoriel ou le nom de la méthode que je pourrais utiliser Google serait utile.Dynamique XAML par C#
3
A
Répondre
1
Vous ne seriez pas vraiment "coller" dans votre fichier XAML, vous auriez du code C# dans votre gestionnaire de bouton pour ajouter dynamiquement des contrôles TextBox à un panneau défini dans votre XAML.
MainWindow.xaml
<phone:PhoneApplicationPage x:Class="WindowsPhoneApplication2.MainPage"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:phone="clr-namespace:Microsoft.Phone.Controls;assembly=Microsoft.Phone"
xmlns:shell="clr-namespace:Microsoft.Phone.Shell;assembly=Microsoft.Phone"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d"
d:DesignWidth="480"
d:DesignHeight="768"
FontFamily="{StaticResource PhoneFontFamilyNormal}"
FontSize="{StaticResource PhoneFontSizeNormal}"
Foreground="{StaticResource PhoneForegroundBrush}"
SupportedOrientations="Portrait"
Orientation="Portrait"
shell:SystemTray.IsVisible="True">
<!--LayoutRoot is the root grid where all page content is placed-->
<Grid x:Name="LayoutRoot"
Background="Transparent">
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="*" />
</Grid.RowDefinitions>
<!--TitlePanel contains the name of the application and page title-->
<StackPanel x:Name="TitlePanel"
Grid.Row="0"
Margin="12,17,0,28">
<TextBlock x:Name="ApplicationTitle"
Text="MY APPLICATION"
Style="{StaticResource PhoneTextNormalStyle}" />
<TextBlock x:Name="PageTitle"
Text="page name"
Margin="9,-7,0,0"
Style="{StaticResource PhoneTextTitle1Style}" />
</StackPanel>
<!--ContentPanel - place additional content here-->
<Grid x:Name="ContentPanel"
Grid.Row="1"
Margin="12,0,12,0">
<StackPanel>
<Button Click="Button_Click"
Content="1" />
<Button Click="Button_Click"
Content="2" />
<Button Click="Button_Click"
Content="3" />
<Button Click="Button_Click"
Content="4" />
<Button Click="Button_Click"
Content="5" />
<StackPanel x:Name="DynamicPanel">
</StackPanel>
</StackPanel>
</Grid>
</Grid>
</phone:PhoneApplicationPage>
MainWindow.cs:
using System;
using System.Windows;
using System.Windows.Controls;
using Microsoft.Phone.Controls;
namespace WindowsPhoneApplication2 {
public partial class MainPage : PhoneApplicationPage {
// Constructor
public MainPage() {
InitializeComponent();
}
private void Button_Click(object sender, RoutedEventArgs e) {
int numBoxes = Int32.Parse(((Button) sender).Content.ToString());
DynamicPanel.Children.Clear();
for (int i = 0; i < numBoxes; i++) {
var newTextBlock = new TextBlock { Name = "textBlock" + i.ToString(), Text = "Hello!" };
DynamicPanel.Children.Add(newTextBlock);
}
}
}
}
0
Comme Wayne souligne qu'il est simple dans de nombreux cas pour générer des contrôles à l'exécution en C#. Alternativement, si vous vouliez vous intéresser à la génération de XAML à l'exécution, voici un article de Pete Brown qui vous aidera à démarrer.
Oui, « coller » était très bien une simplification excessive du processus. – Dan
Voir l'exemple ci-dessus – lesscode
Au lieu d'insérer un bloc de code généré dynamiquement, disons que je voulais utiliser un bloc de code spécifique écrit par moi. Donc, si je voulais mettre Dans l'événement lors du clic sur le bouton, comment le coder dans le fichier code-behind? –
Dan