gpt4 book ai didi

c# - 通过 C# 的动态 XAML

转载 作者:行者123 更新时间:2023-11-30 18:06:53 26 4
gpt4 key购买 nike

诚然,我是 WP7 应用程序开发领域的新手。前段时间我找到了一个视频,展示了如何做类似的事情,但现在找不到了。

本质上,我想根据用户的选择更改 XAML 页面的内容。举一个简单的例子,可能有五个按钮,编号为 1-5。单击任何一个都会在页面上创建那么多文本框。那么有没有办法指示事件处理程序中的按钮将一些 XAML 代码粘贴到页面?这是否与 HTML 中的 CSS 工作表类似?非常感谢您抽出时间帮我解答这个问题!甚至指点我的教程或我可以谷歌的方法的名称也会有所帮助。

最佳答案

您不会真的“粘贴”到您的 XAML 文件中,您可以在按钮处理程序中使用 C# 代码将 TextBox 控件动态添加到 XAML 中定义的面板。

主窗口.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>

主窗口.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);
}
}
}
}

关于c# - 通过 C# 的动态 XAML,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4405130/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com