- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
Possible Duplicate:
WPF accesses only single instance of derived class with dependency property
我在 XAML 文件中将多边形定义为我的 UserControl 的资源:
<UserControl.Resources>
<Polygon x:Key="MyPolygon">
<Polygon.Points>
...
</Polygon.Points>
</Polygon>
</UserControl.Resources>
并希望创建此元素的多个(但单独的)实例并将它们添加到 Canvas 中。
Polygon polygon = (Polygon) this.Resources["MyPolygon"];
// ...
canvas.Children.Add(polygon);
通过重复运行上述代码第二次添加多边形时,抛出以下错误:
Specified Visual is already a child of another Visual or the root of a CompositionTarget.
可能的解决方案是:
有没有更好的解决方案可以利用 Resources 属性(或一种可实例化的多边形)?
最佳答案
XAML 中的“可实例化多边形”是一个带有 Polygon
的模板。在里面。无论你需要多边形在哪里,放一个 ContentControl
在那里并将模板应用于它。
如果您在 XAML(而不是代码隐藏)中执行所有这些操作,生活就会轻松很多。
<UserControl.Resources>
<DataTemplate x:Key="MyPolygonTemplate">
<Polygon>
<Polygon.Points>
...
</Polygon.Points>
</Polygon>
</DataTemplate>
</UserControl.Resources>
<Grid>
<Canvas>
<ContentControl
ContentTemplate="{StaticResource MyPolygonTemplate}"
/>
</Canvas>
</Grid>
如果您需要创建任意数量的它们,请使用 ItemsControl
用Canvas
为其 ItemsPanel
, 然后放一个 Polygon
在 ItemTemplate
对于 ItemsControl
.填充 ItemsControl
, 你会绑定(bind)它的 ItemsSource
到ObservableCollection<T>
您的 View 模型的属性。该集合将包含您的多边形事物要在视觉上表示的任何数据项对象。如果你需要十个多边形飞来飞去,把十个东西放在收藏里,然后宾果游戏,它们就在那里。抽出一个,UI 将只显示剩余的九个。要定位它们,请绑定(bind) Canvas.Left
和 Canvas.Top
到数据项类的适当属性(必须实现 INotifyPropertyChanged )(您可能必须通过 an ItemContainerStyle
应用这些属性;我对 Canvas
做的不多)。
您实际上不必使用 ContentControl
的 Content
属性(property),如果没有必要。但是你可以使用 Content
通过 Polygon
不同套Points
来自数据项类,如果你愿意的话。
这是一个常见问题的副本; I answered it yesterday too .
关于c# - 使多边形资源独一无二,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36225035/
使用此代码: main :: FilePath -> FilePath -> IO () main wrPath rdPath = do x FilePath -> IO() 但是当我将“main”
我有一个 QList由 QVector3D 组成.一个 QVector3D表示一个顶点或一个点。此列表还包含 STL-File 的所有顶点.问题是一个顶点在列表中多次存在。需要一个 STL 文件的唯一
如果我丢失了 android (APK) keystore 文件,我可以创建一个新的吗?我知道所有数据,例如名字、姓氏、组织、密码、有效期等。我可以使用这些数据创建相同的 keystore ,还是应该
我放置的函数很少,但无法按我的意愿运行。 slug 是根据帖子标题自动动态创建的。 Example: If a post title is "test" then the slug will be "
我想在 cassandra 中进行唯一约束。因为我希望我专栏中的所有值在我的专栏系列中都是唯一的前任:姓名拉胡尔电话123地址-abc 现在我希望这一行没有等于 rahul ,123 和 abc 的值
我在 C++ 代码中使用 #define 语句时遇到一些问题,但是我不熟悉如何在 VC++ 中处理它: >filetaint.cpp 1>.\filetaint.cpp(272) : error C2
我正在使用 PayPal IPN,我有以下问题:是否可能有两个具有相同 txn_id 和 payment_status 参数的 IPN 消息? 例如: IPN:txn_id=4BB79227HY951
就像 php 的 array_unique 函数一样: $input = array("a" => "green", "red", "b" => "green", "blue", "red"); $r
我是一名优秀的程序员,十分优秀!