![](/img/trans.png)
[英]Why can't I define a ResourceDictionary in XAML and instantiate it by itself?
[英]Why can't I define a Geometry with a Transform in XAML?
我正在嘗試創建一個ResourceDictionary
這個答案包含具有Transforms
集的StreamGeometries
:
<ResourceDictionary>
<StreamGeometry x:Name="Chevrons">
<StreamGeometry.Transform>
<TranslateTransform X="20" Y="120"/>
</StreamGeometry.Transform>
M21.750001,94.749999 L34.000002,117.66218 30.625003,133.62501 17 [...]
</StreamGeometry>
</ResourceDictionary>
但是,我收到以下錯誤:
1:無法向“StreamGeometry”類型的對象添加內容。
和
2:處理初始化字符串' {PathData} '時遇到TypeConverter語法錯誤。 通過TypeConverter創建的對象不允許使用元素屬性。
所以我用PathGeometry
嘗試了它並得到了這個錯誤:
無法將指定的值分配給集合。 預期以下類型:“PathFigure”。
有沒有辦法在XAML代碼中將變換應用於幾何? 或者我只需要通過代碼來完成它?
你可以這樣寫:
<PathGeometry x:Key="Chevrons">
<PathGeometry.Transform>
<TranslateTransform X="20" Y="120"/>
</PathGeometry.Transform>
<PathGeometry.Figures>
M21.750001,94.749999 L34.000002,117.66218 30.625003,133.62501 ...
</PathGeometry.Figures>
</PathGeometry>
或者像這樣:
<PathGeometry x:Key="Chevrons"
Figures="M21.750001,94.749999 L34.000002,117.66218 30.625003,133.62501 ...">
<PathGeometry.Transform>
<TranslateTransform X="20" Y="120"/>
</PathGeometry.Transform>
</PathGeometry>
關於StreamGeometry
的行為,引自MSDN
:
這里:
StreamGeometry是Freezable類型。 StreamGeometry是PathGeometry的輕量級替代品,用於創建幾何形狀。 當您需要描述復雜幾何體但不希望支持數據綁定,動畫或修改的開銷時,請使用StreamGeometry。 由於其效率,StreamGeometry類是描述裝飾者的不錯選擇。
和這里:
如果StreamGeometry包含Transform或任何非描邊或未填充的段,則無法序列化。
因此,請使用PathGeomerty
,如@Clemens所建議的那樣。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.