Ошибка компиляции: окно не содержит определения для шаблона, даже если шаблон определен. WPF C# - PullRequest
0 голосов
/ 13 апреля 2020

Я пытаюсь переключить шаблон для сетки данных на основе определенных условий, но, хотя я определяю шаблон, программа не компилируется, говоря, что мое окно не содержит определения для указанного шаблона.

XAML

<ControlTemplate TargetType="DataGrid" x:Name="myGrid">
            <DataGrid>
                <DataGrid.Columns>
                    <DataGridTextColumn Header="ID" Binding="{Binding ID}"></DataGridTextColumn>
                    <DataGridTextColumn Header="Tag" Binding="{Binding Tag}"></DataGridTextColumn>
                </DataGrid.Columns>
            </DataGrid>
 </ControlTemplate>

C#

if (mybool == true)
            scrollWin.gridMain.Template = scrollWin.myGrid;

Это выглядело как проблема "просто перезапустить Visual Studio", но это не помогло. Я не получаю никаких ошибок, прежде чем пытаться запустить программу, наведя курсор мыши на «myGrid», видно, что она распознает его как члена scrollWin. Есть идеи?

1 Ответ

2 голосов
/ 14 апреля 2020

ControlTemplate должен быть определен как ресурс с x:Key вместо x:Name:

<ControlTemplate TargetType="DataGrid" x:Key="myGrid">

Если вы затем поместите в словарь Resources (<Grid.Resources> или любой другой тип grdMain) из gridMain, вы можете получить ссылку на него следующим образом:

scrollWin.gridMain.Template = scrollWin.gridMain.Resources["myGrid"] as ControlTemplate;

Определение самого шаблона выглядит немного странным, но это еще одна проблема .

...