我在使用UserControls在XAML中工作时遇到了主要问题 - 我花了数小时试图找出所有问题,但无处可寻,无法找到我出错的地方。
我遇到的主要问题是当我创建一个UserControl例如一个简单的显示对象不同的颜色 - 我已经成功地为此创建了一个属性,并且可以在设计时将颜色分配给此用户控件,并且它工作 - 显示绿色,红色等
但是,当我给这个UserControl一个名称,所以我可以在运行时分配这个属性,我得到一个错误“无法创建类型'MyUserControl'的实例”,如果我删除用户控件的名称 - 我可以在设计时添加尽可能多的数据,它们都可以工作,但是只要我指定一个名称或x:名称就会中断,我无法弄清楚原因。
有可能创建一个标签,例如它有一个名称,我可以在代码中引用它 - 为什么不是我自己的控件 - 不管它有多简单。XAML/WPF中UserControls的问题是什么?
我的主要问题是:
- 为什么给我的用户一个 名称或X:名称停止工作呢?
- 如何在 窗口中使用多个 相同类型的UserControls?
- 如何从UserControl外部访问UserControl的画布,标签 等或UserControl外部的 ?
- 如何在运行时或在设计时使用代码或XAML实例化UserControl: ?
我不明白为什么这些应该是如此困难 - 我无法弄清楚这个问题,所以请任何人都可以帮忙,那么谢谢!
这里是我的用户的XAML和代码
<UserControl x:Class="Device.Draco"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Width="20" Height="36" x:Name="Icon">
<Canvas Width="20" Height="36" HorizontalAlignment="Left" VerticalAlignment="Top">
<Rectangle Height="36" Width="20" Fill="{Binding ElementName=Icon, Path=ZuneColour}" Canvas.Left="0" Canvas.Top="0" RadiusX="1" RadiusY="1">
<Rectangle.BitmapEffect><OuterGlowBitmapEffect GlowColor="Black" GlowSize="2" /></Rectangle.BitmapEffect>
</Rectangle>
<Rectangle Canvas.Left="1" Canvas.Top="1" Height="24" Stroke="#191616" Width="18">
<Rectangle.Fill>
<LinearGradientBrush>
<GradientStop Offset="1" Color="#231F20"/>
<GradientStop Offset="0" Color="#524F4F"/>
<LinearGradientBrush.Transform>
<RotateTransform Angle="68" CenterX="0.5" CenterY="0.5"/>
</LinearGradientBrush.Transform>
</LinearGradientBrush>
</Rectangle.Fill>
</Rectangle>
<Rectangle Canvas.Left="5.5" Canvas.Top="25" Height="9" Width="9" RadiusX="3" RadiusY="3">
<Rectangle.Fill>
<LinearGradientBrush>
<GradientStop Offset="0" Color="#66000000"/>
<GradientStop Offset="1" Color="#22000000"/>
</LinearGradientBrush>
</Rectangle.Fill>
<Rectangle.Stroke>
<LinearGradientBrush>
<GradientStop Offset="0" Color="#66FFFFFF"/>
<GradientStop Offset="1" Color="#22FFFFFF"/>
</LinearGradientBrush>
</Rectangle.Stroke>
</Rectangle>
</Canvas>
这是用户控件的代码 - 添加了所有的风格和充满简单XAML来消除此为原因 - 代码背后是下面:
Namespace Device
Partial Public Class Draco
Inherits System.Windows.Controls.UserControl
Public Shared ZuneColorProperty As DependencyProperty = _
DependencyProperty.Register("ZuneColour", GetType(Brush), GetType(Device.Draco))
Public Property ZuneColour() As Brush
Get
Return GetValue(ZuneColorProperty)
End Get
Set(ByVal Value As Brush)
SetValue(ZuneColorProperty, Value)
End Set
End Property
End Class
End Namespace
下面是我如何使用它目前
为例3210
你能否提供一些代码? – 2009-02-03 11:30:39
这段代码现在连接到问题 – RoguePlanetoid 2009-02-03 15:02:05