Динамические столбцы сетки и доступ к StaticResources - PullRequest
1 голос
/ 10 августа 2011

В моей сетке есть статические столбцы, и когда я нажимаю на кнопку, я добавляю несколько динамических столбцов:

class ItemConstraintColumn : DataGridTemplateColumn
        {
            public ItemConstraintColumn(ReportEventItemConstraint _ic)
            {
                StringBuilder sb = new StringBuilder();
                sb.Append("<DataTemplate ");
                sb.Append("xmlns='http://schemas.microsoft.com/winfx/2006/xaml/presentation' ");
                sb.Append("xmlns:x='http://schemas.microsoft.com/winfx/2006/xaml' ");
                sb.Append("xmlns:local='clr-namespace:MyNameSpace;assembly=MyAssembly'> ");
                sb.Append("<local:SignalControl DataContext=\"{Binding Source={StaticResource SignalControlVM}}\" />");
                sb.Append("</DataTemplate>");

                CellTemplate = (DataTemplate)XamlReader.Load(sb.ToString());
                Header = _ic.Name;
            }
        }

Проблема в том, что я не могу получить доступ к StaticResource, объявленному на моей странице Xaml, поэтому я не могу связать свой контроль ... Подскажите, пожалуйста, что с этим не так? Спасибо

Ответы [ 2 ]

1 голос
/ 10 августа 2011

В приведенном ниже коде вы можете использовать приведенный ниже код для поиска статического ресурса, объявленного в xaml

this.FindResource ("ResourceName"))

0 голосов
/ 10 августа 2011

Похоже, вы создаете свой DataContext как полностью автономный файл Xaml.

Привязки оцениваются во время загрузки, когда ваш фрагмент не является частью визуального дерева, поэтому ничего не найдено (нет родительской страницы и, следовательно, нет ресурса во время анализа)..

Вам лучше загрузить его как есть, найти внутри него локальный элемент: SignalControl и связать вместо него DataContext с помощью кода.

Хотя сам по себе он бесполезенпри поиске ресурса сделаю последнюю часть работы.т.е. найти ресурс для привязки.

...