由于中风,我不得不在两年前离开我的高级开发人员工作,其中大多数是数据库工作 .
我想知道如果我记得关于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控件和两个公共属性(一个将允许文本的get / set,另一个将允许get / set所述文本的COLOR(我更喜欢通过构造函数调用设置属性的值)来自主应用程序,例如 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);
}
}
这"works"适用于 sShape
但不适用于 cColor
,它只适用于 sShape
如果我在主应用程序XAML中创建用户控件,如果我尝试以编程方式执行它,它什么都不做(但是一旦通过XAML创建,我就可以访问 sShape
属性从主应用程序,但尝试以编程方式设置新颜色不会更改颜色也不会引发异常 .
我错过了什么?
在主应用程序中可能有数百个,所以将它们放在XAML中是没有意义的 . 谢谢 .
1 回答
首先你有“typeof(Colors)”,我认为应该是“typeof(Color)” . 颜色是Color类型的枚举,而不是类型本身 .
除此之外,您的自定义控件看起来很好 . 您没有向我们展示您以编程方式创建它所做的工作 . 我怀疑在实例化它并设置所有值后,你不会将它添加到可视树中 .
因此,在XAML中标识容器控件:
然后,您可以将控件的实例添加为网格的子项:
另外你如何检查颜色是否有效?您是否使用它来创建SolidColorBrush?