gpt4 book ai didi

c# - Xamarin.Forms:C# 代码与 XAML 代码

转载 作者:行者123 更新时间:2023-11-30 14:25:26 24 4
gpt4 key购买 nike

美好的一天。我正在创建一个简单的 Xamarin.Forms(可移植)程序。我只是在想,如果我能以某种方式“合并”或者将我的 XAML 文件中的标签调用到我的 XAML.cs 中。是否可以?因为每次我在 XAML.cs 中编写代码时,我在 XAML 文件中的现有代码似乎都没有出现。

例如,我的 SalesPage.xaml.cs 中有这段代码

 public partial class SalesPage : ContentPage
{
Label resultsLabel;
SearchBar searchBar;
public SalesPage()
{
resultsLabel = new Label
{
Text = "Result will appear here.",
VerticalOptions = LayoutOptions.FillAndExpand,
FontSize = 25
};

searchBar = new SearchBar
{
Placeholder = "Enter search term",
SearchCommand = new Command(() => { resultsLabel.Text = "Result: " + searchBar.Text + " is what you asked for."; })
};
Content = new StackLayout
{
VerticalOptions = LayoutOptions.Start,
Children = {
new Label {
HorizontalTextAlignment = TextAlignment.Center,
Text = "SearchBar",
FontSize = 50,
TextColor = Color.Purple
},
searchBar,
resultsLabel,

new Label {
HorizontalTextAlignment = TextAlignment.Center,
Text = "SearchBar",
FontSize = 50,
TextColor = Color.Purple
},


new ScrollView
{
Content = resultsLabel,
VerticalOptions = LayoutOptions.FillAndExpand
}
},
Padding = new Thickness(10, Device.OnPlatform(20, 0, 0), 10, 5)
};
}

唯一会出现在屏幕上的是我在 Xaml.cs 上编写的代码。

看看这个。

我的 XAML 文件中有这段代码:

    <?xml version="1.0" encoding="utf-8" ?>
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
x:Class="XamarinFormsDemo.Views.SalesPage"
BackgroundImage="bg3.jpg"
Title="Sales Page">

<Label x:Name="SalesLabel"
VerticalOptions="Center"
HorizontalOptions="Center" />

</ContentPage>

如何在屏幕上显示我在 XAML.CS 中编写的代码和我在 XAML 中编写的代码?如何将它们一起显示?

非常感谢。非常感谢您的帮助。

最佳答案

首先让我描述一下 XAML + 代码隐藏概念的工作原理,然后再回到您的问题。首先读取并解析 XAML 文件并创建 UI。然后执行后面的代码,您可以在其中对 UI 进行一些调整。这意味着您可以通过其 Name 属性访问 XAML 的所有控件。在上面的示例中,您可以将其添加到后面的代码中:

SalesLabel = "My new Label";

它会覆盖您在 XAML 中定义的标签。如果您需要动态确定标签,这会很方便。

如果您想另外动态添加内容到 XAML,您必须访问现有控件并将内容添加到该控件。

您定义的 XAML 文件具有隐式“Content”属性。我会将其添加到您的 XAML 代码中(即使这很可能会返回编译器错误)来说明这一点:

<?xml version="1.0" encoding="utf-8" ?>
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
x:Class="XamarinFormsDemo.Views.SalesPage"
BackgroundImage="bg3.jpg"
Title="Sales Page">
<Content>
<Label x:Name="SalesLabel"
VerticalOptions="Center"
HorizontalOptions="Center" />
</Content>
</ContentPage>

Content 属性不是“聚合”,这意味着您只能拥有一个内容控件,而不是控件列表。要显示多个控件,需要一个可以像 StackLayout 一样保存聚合的控件。

但由于您没有在 XAML 文件中指定这样的控件,而是直接覆盖后面代码中的 Content 属性,因此它会在运行时被替换,甚至在您在屏幕上看到它之前。

Content = new StackLayout
{ <your other code> }

如果您在后面的代码中删除它,您将在运行时看到 XAML 内容。

现在要解决您的问题,请在 XAML 中创建 View 的所有静态部分。当您对结果感到满意时,转到后面的代码,选择您需要增强或动态调整的控件并在这些控件上进行调整。

这是最基本的方法。对于更复杂的 UI 或更复杂的解决方案,让我至少为动态 UI 命名具有数据绑定(bind)的 MVVM 方法。 MVVM in Xamarin.Forms

关于c# - Xamarin.Forms:C# 代码与 XAML 代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38391096/

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