У меня есть ControlTemplate, определенный в 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"?
}
Когда я поставил точку останова «г», он на самом деле относится к контролю, но похоже, я не могу «читать из своих недр»? Должен ли я публиковать эти элементы? Должен ли я использовать какой-то специальный метод?
Некоторый контекст:
Это был создан, чтобы я мог визуально расположить несколько опорных точек в CustomControl, используя эту ControlTemplate для чтения позиции программно.
В частности, я хочу, чтобы получить imagem.Width
, imagem.Height
, frontal.Canvas.Left
, frontal.Canvas.Top
, frontal.Angle
и line.Margin.Left
, так что я могу программно генерировать массив интерактивных форм на UserControl воспользовавшись симметрии изображения.
Работал нормально! Стоит упомянуть, что в моем случае 'controlTemplateContent' является сеткой, поэтому другой возможный подход заключался бы в том, чтобы передать его в Grid и получить доступ к своим элементам через свойство' Children' и т. Д. – heltonbiker