繁体   English   中英

数据绑定和用户控件-已针对UWP,Windows 10更新,并通过c#实例化,而不是XAML

[英]Data Binding and User Controls-Updated for UWP, Windows 10 and instantiating via c# not XAML

由于中风,我不得不离开两年多以前的Sr Developer工作,其中大部分是数据库工作。

我正在尝试看看我是否还记得UI的内容。 假设使用C#,UWP,VS2017和Windows 10,我发现了一些自定义/用户控件示例,但每个示例都演示了如何创建控件,然后通过XAML在主/父应用程序中使用它的一个实例:

 <local:GamePiece x:Name="gp01"  HorizontalAlignment="Left" VerticalAlignment="Top" FontSize="48" FontFamily="Wingdings" Margin="0,1,0,0"/>

但是我想以编程方式创建它:例如MyControl1 muc1 = new MyControl1()

这样,该控件具有一个textBlock控件和两个公共属性(一个将允许获取/设置文本的颜色,另一个将允许获取/设置所述文本的颜色的颜色(我希望通过构造函数调用来设置属性的值来自主应用程序,例如MyControl1 muc1 = new MyControl1(sDisplayText, Color.Red)如下所示:

namespace ColorsAndShapes
{
    public sealed partial class GamePiece : UserControl
    {
        public GamePiece()
        {
            this.InitializeComponent();
        }

        public string sShape
        {
            get { return (string)GetValue(sShapeProperty); }
            set { SetValue(sShapeProperty, value); }
        } 

        public static readonly DependencyProperty sShapeProperty = DependencyProperty.Register("sShape", typeof(string), typeof(GamePiece), null);

        public Color cColor
        {
            get { return (Color)GetValue(cColorProperty); }
            set { SetValue(cColorProperty, value); }
        }

        public static readonly DependencyProperty cColorProperty = DependencyProperty.Register("cColor", typeof(Colors), typeof(GamePiece), null);

    }
}

这对sShape但对cColor sShape ,并且仅当我在主应用程序XAML中创建用户控件时才对sShape ,如果我尝试以编程方式进行操作,则此操作sShape (但是一旦通过XAML创建,我便可以访问主应用程序中的sShape属性,但是尝试以编程方式设置新颜色不会更改颜色,也不会引发异常。

我想念什么?

在主应用程序中可能有数百个,因此将它们放入XAML没有任何意义。 谢谢。

首先,您有“ typeof(Colors)”,我认为应该是“ typeof(Color)”。 Colors是Color类型的枚举,而不是类型本身。

除此之外,您的自定义控件看起来还不错。 您尚未向我们展示如何以编程方式创建它。 我的怀疑是您没有在实例化它并设置所有值之后将其添加到可视化树中。

因此,请在XAML中标识一个容器控件:

<Grid Name=GameBoard />

然后,您可以将控件的实例添加为网格的子代:

GameBoard.Children.Add(myGamePiece);

另外,您如何检查颜色是否有效? 您是否正在使用它来创建SolidColorBrush?

暂无
暂无

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

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