我在ResourceDictionary中定義的控件模板:如何從代碼訪問資源的結構(在可視化樹中)?
<ControlTemplate x:Key="FacePositionSource">
<Grid>
<Image x:Name="imagem" Width="1028" Height="524" Source="/Miotec.AtlasControl;component/Image/face.png"/>
<Canvas>
<local:MusclePositionControl x:Name="frontal" Angle="22" Canvas.Left="571.5" Canvas.Top="108"/>
</Canvas>
<Line x:Name="line" X1="0" X2="0" Y1="0" Y2="{Binding Height, ElementName=imagem}" Margin="514,0,0,0"/>
</Grid>
</ControlTemplate>
在後面的代碼,我有:
void AtlasFace_Loaded(object sender, RoutedEventArgs e)
{
var r = Application.Current.FindResource("FacePositionSource") as ControlTemplate;
Console.WriteLine(r);
// how to get those properties from "r"?
}
當我把一個斷點在「R」,它實際上指的是控制權,但看起來我不能「從內臟中讀取」?我應該公開這些元素嗎?我應該使用一些特殊的方法嗎?
一些背景:
這是創建這樣我可以在視覺上放置一個CustomControl的一些參考點,使用該控件模板編程也可讀取的位置。
具體而言,我想獲得imagem.Width
,imagem.Height
,frontal.Canvas.Left
,frontal.Canvas.Top
,frontal.Angle
和line.Margin.Left
,這樣我可以編程方式生成可點擊的形狀上的用戶控件採取圖像simmetry的優點的陣列。
工作很好!值得一提的是,在我的例子中,'controlTemplateContent'是一個Grid,所以另一種可能的方法是將其轉換爲Grid並通過'Children'屬性訪問它們的元素。 – heltonbiker