【问题标题】:How to set my custom class's member View's property from XAML? (Xamarin.forms)如何从 XAML 设置我的自定义类的成员视图属性? (Xamarin.forms)
【发布时间】:2016-07-06 13:49:41
【问题描述】:

我正在使用 Xamarin.forms 制作应用程序。

我已经在这里问过问题。 How to set child of class' property with using xaml? (Xamarin.forms) 但是我无法得到正确的答案,或者可能没有解决方案。

我想要做的是从 ContentPage 的 XAML 设置我的类的视图属性。 我的班级有一些像 Image 和其他的视图。

我搜索发现有'ControlTemplete'。但我不确定这是我要找的东西。

而且我也不认为为我要设置的每个属性添加 BindableProperty 和 OnPropertyChangedDelegate 代码是最好的方法。

还有其他更好的解决方案吗?

谢谢。

【问题讨论】:

  • 如果你已经知道正确答案是错误的,为什么还要问这个问题?
  • @EdPlunkett 嗨,我认为他的回答没有错。我真的很感激他。我想知道是否有其他方法,或者它是正确的答案并且没有其他方法。
  • 我也写了关于它的问题。似乎这是正确的答案。感谢您的评论
  • 您能解释一下创建自定义Stack 的目的,而不是从框中使用StackLayout,将Image 放在那里并使用Image 的所有必需属性吗?
  • @EgorGromadskiy 我想做一些模板(这里是我基于 StackLayout 的自定义类)并在任何地方使用它。而且我还想从我放置的位置(这里,ContentPage)设置它的属性和子属性。

标签: wpf xaml xamarin xamarin.forms


【解决方案1】:

您可以使用 ContentProperty 属性将控件内的 XAML 映射到属性。

[ContentProperty("MyContent")]
public class MyControl : ContentView 
{
    public View MyContent { get; set; }
}

在 XAML 中是这样的

<local:MyControl>
    <Grid></Grid>
</local:MyControl>

这将您限制为只有一个属性,但应该适用于任何类型。

【讨论】:

  • 是的。我知道那个解决方案。但是,添加控件时使用的不是解决方案吗?我正在尝试设置已添加的子控件的属性。
  • @BrightLee,不太清楚你的意思。您的控件是从 XAML 构造的,您可以在构造过程中设置构造函数参数或传递单个内容属性。创建它后,您可以绑定以从模型中更改它的属性。你能详细说明你的场景是什么吗?
  • hm... 在您提供的 XAML(我认为是 MyContentPage.xaml)和您命名为“MyControl”的类中,有一个名为 MyContent 的视图。假设它是图像,而不是视图。假设 MyControl 是一个类似于 StackLayout 的布局。 MyContent(Image) 已经在 MyControl.xaml 中构建。 MyControl 是在 MyContentPage.xaml 中分配的。现在,如何在 MyContentPage.xaml 中设置 MyContent 的“Source”或“Aspect”属性?
  • @BrightLee,您是在谈论从页面 XAML 传递参数来控制 XAML 吗?页面在哪里设置了控件的参数,而控件在其子项上使用了该值?
  • 是的。而且我不想创建所有 BindableProperty 每个我想将参数传递给它的孩子。
猜你喜欢
  • 2021-07-21
  • 2020-04-27
  • 2023-04-02
  • 2010-10-12
  • 1970-01-01
  • 1970-01-01
  • 2010-12-10
  • 1970-01-01
  • 2013-06-26
相关资源
最近更新 更多