2016-04-07 5 views
0

Я добавил элемент управления содержимым, содержащий диаграмму telerik, которую я назвал bob. Я использовал xamlReader.parse для создания элемента управления содержимым, а затем поместил его на холст.Как получить доступ к элементу управления, добавленному из C# по имени

Теперь я хочу получить доступ к диаграмме с именем bob, чтобы установить ее значения.

var myChart = (RadCartesianChart)this.FindName("bob"); 

Я продолжаю получать null.

Может кто-нибудь помочь мне определить мой график и показать мне, как получить к нему доступ?

Код для добавления ContentControl на холст в моем Xaml.

StringBuilder LineCharString = new StringBuilder("<ContentControl "); 
LineCharString.Append("xmlns='http://schemas.microsoft.com/winfx/2006/xaml/presentation' "); 
LineCharString.Append("xmlns:x='http://schemas.microsoft.com/winfx/2006/xaml' "); 
LineCharString.Append("xmlns:s='clr-namespace:AccSys.Helpers.Dashboard;assembly=AccSys' "); 
LineCharString.Append("xmlns:telerik='http://schemas.telerik.com/2008/xaml/presentation' "); 
LineCharString.Append("Width='100' Height='100' MinWidth='50' MinHeight='50' Canvas.Top='160' Canvas.Left='30'>"); 
LineCharString.Append("<Grid IsHitTestVisible='False'>"); 
LineCharString.Append("<Grid.RenderTransform>"); 
LineCharString.Append("<TranslateTransform/>"); 
LineCharString.Append("</Grid.RenderTransform>"); 
LineCharString.Append("<telerik:RadCartesianChart x:Name='" + ChartName + "'>"); 
LineCharString.Append("<telerik:RadCartesianChart.Grid>"); 
LineCharString.Append("<telerik:CartesianChartGrid MajorLinesVisibility='XY' MajorXLineDashArray='10,5' MajorXLinesRenderMode='All' />"); 
LineCharString.Append("</telerik:RadCartesianChart.Grid>"); 
LineCharString.Append("<telerik:RadCartesianChart.VerticalAxis>"); 
LineCharString.Append("<telerik:LinearAxis/>"); 
LineCharString.Append("</telerik:RadCartesianChart.VerticalAxis>"); 
LineCharString.Append("<telerik:RadCartesianChart.HorizontalAxis>"); 
LineCharString.Append("<telerik:CategoricalAxis/>"); 
LineCharString.Append("</telerik:RadCartesianChart.HorizontalAxis>"); 
LineCharString.Append("<telerik:BarSeries x:Name='xBarSeries' CategoryBinding='XValue' ValueBinding='YValue'/>"); 
LineCharString.Append("</telerik:RadCartesianChart>"); 
LineCharString.Append("</Grid>"); 
LineCharString.Append("</ContentControl>"); 

ContentControl LineChartCC = new ContentControl(); 
LineChartCC = (ContentControl)XamlReader.Parse(LineCharString.ToString()); 

var canvass = DashboardCanvas; 
canvass.Children.Add(LineChartCC); 
+0

Не могли бы вы также показать свой XAML? –

+0

Вы назвали его при создании? При добавлении в форму он не сохранит имя переменной в качестве своего имени, вместо этого он должен быть явно установлен. Также есть картезианская диаграмма *, которая * rad? –

+0

@ S.Akbari Я показал код C#, который анализирует строку в xaml – Pomster

ответ

0

Если по названию вы имеете в виду установку свойства XAML x: Name, вы можете связаться с ним по этому имени. Например name = "Control" -> Control.SomeProperty = ""