0
需要爲從GeometryDrawings形成的動態生成樣式提供某種接口(保存/編輯/加載)。問題在於它們缺乏Name屬性的情況之間的區別。我已經試過這樣的事情:GeometryDrawing序列化/反序列化
// some dummy predefined style, it has more drawings but i keep first one
const string templateXaml = @"<DrawingBrush xmlns=""http://schemas.microsoft.com/winfx/2006/xaml/presentation"" xmlns:x=""http://schemas.microsoft.com/winfx/2006/xaml"" Stretch=""Uniform"">
<DrawingBrush.Drawing>
<DrawingGroup>
<DrawingGroup.Children>
<GeometryDrawing Geometry=""F1 M 77,92L 704,92L 704,517L 77,517L 77,92 Z "" x:Name=""test_name"">
<GeometryDrawing.Pen>
<Pen Thickness=""4"" LineJoin=""Round"" Brush=""#FFFF7D00""/>
</GeometryDrawing.Pen>
</GeometryDrawing>
<!--More drawings here -->
</DrawingGroup.Children>
</DrawingGroup>
</DrawingBrush.Drawing>
</DrawingBrush>";
var drawingBrush = XamlReader.Parse(templateXaml) as DrawingBrush;
var firstDrawing = (drawingBrush.Drawing as DrawingGroup).Children[0] as GeometryDrawing;
//..
var name = firstDrawing.GetValue(NameProperty);
//..
firstDrawing.SetValue(FrameworkElement.NameProperty, "some value");
我想有X:名稱在這裏名稱變量(或像這樣)才能改變它比序列得到的,例如,同風格,但用不同的圖紙名稱(現在的情況是它們被命名爲Element1,2,3 ...,並且必須根據主題區域命名,並且處理必須是自動的,但不是手動的,關於沒有能力的事實以所見即所得的方式做到這一點 - 每個繪圖都放入可視化,Visuals被放入自定義FrameworkElement等)。當然,使用Drawings的整個過程是一個痛苦,但這是我不能忽視的系統設計要求。提前致謝。
我不太明白你在問什麼。你在問如何定義模板XML,以便x:Name很容易設置或更改? –
類別。我想定義複雜繪圖元素的模板,並能夠讀取/保存(最好通過標準的序列化算法),並能夠識別其元素並保持其狀態。 – Jaded