gpt4 book ai didi

c# - WPF 无法在 DataContext 中显示模板

转载 作者:行者123 更新时间:2023-11-30 21:31:09 32 4
gpt4 key购买 nike

我是 WPF 的新手,我很确定更有经验的 WPF 编码人员能够在几秒钟内发现我的问题。

我试图通过将其声明为模板来在 DataContent 中显示一个 UserControl,但我得到的只是:

enter image description here

以下是我的代码的相关部分:

                            <ContentControl Grid.Column="0" Grid.Row="7" Grid.ColumnSpan="3" >
<DataTemplate DataType="{x:Type ViewModels:anotherViewViewModel}">
<Views:anotherView Content="{Binding}"/>
</DataTemplate>
</ContentControl>

View 是:

<UserControl x:Class="materialDesignTesting.Views.anotherView"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:local="clr-namespace:materialDesignTesting.Views"
mc:Ignorable="d"
d:DesignHeight="300" d:DesignWidth="300">
<Grid Background="Aqua">

</Grid>
</UserControl>

模型 View 是:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace materialDesignTesting.ViewModels
{
class anotherViewViewModel
{
}
}

最佳答案

<ContentControl Grid.Column="0" Grid.Row="7" Grid.ColumnSpan="3" >
<DataTemplate DataType="{x:Type ViewModels:anotherViewViewModel}">
<Views:anotherView Content="{Binding}"/>
</DataTemplate>
</ContentControl>

正在将 DataTemplate 设置为内容控件的实际内容。您需要 ContentTemplate 属性(或设置资源):

<ContentControl Grid.Column="0" Grid.Row="7" Grid.ColumnSpan="3" >
<ContentControl.ContentTemplate>
<DataTemplate DataType="{x:Type ViewModels:anotherViewViewModel}">
<Views:anotherView Content="{Binding}"/>
</DataTemplate>
</ContentControl.ContentTemplate>
</ContentControl>

仅当 ContentControlContent 属性设置为 anotherViewModel 的实例时才有效。由于它没有绑定(bind)或该代码中的任何内容,我猜它仍然是 null,因此不会实例化您的 View 。

可以按照@Silvermind 的建议直接使用Views:anotherView,但我怀疑您要进行某种动态切换。如果是这种情况,您想坚持使用当前的方法,只需实际为 ContentControl 提供一些内容即可显示!

相关地,除非 anotherView 也是 ContentControl 它可能没有 Content 属性,所以该设置/绑定(bind)是无稽之谈。 anotherView 将选择 anotherViewModel 的实例作为其 DataContext,因为它位于您拥有的数据模板中,不需要额外的代码。

关于c# - WPF 无法在 DataContext 中显示模板,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53675436/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com