Compile Error: Window does not contain definition for template, even though template is defined. WPF C#

Compile Error: Window does not contain definition for template, even though template is defined. WPF C#

我正在尝试根据某些条件切换数据网格的模板,但即使我定义了一个模板,程序也无法编译,说我的 window 不包含上述的定义模板。

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;

这似乎是一个 "just restart Visual Studio" 问题,但这并没有帮助。在尝试 运行 程序之前我没有收到任何错误,将鼠标悬停在 "myGrid" 上表明它将它识别为 scrollWin 的成员。有什么想法吗?

ControlTemplate 应定义为 资源 x:Key 而不是 x:Name:

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

如果您随后放入 gridMainResources 字典(<Grid.Resources>grdMain 的任何类型),您可以像这样获得对它的引用:

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

模板本身的定义看起来有点奇怪,但这是另一个问题。