我的数据模板都没有根据 DataContext 的数据类型显示。传递到 UserControl 的 DataContext 的实际对象是一个实体 (EntityFrameWork 6.0)。
我指定 DataType="{x:Type pf:Promotion}",它是实体所基于的 POCO 类的名称。
(xmlns:pf="clr-namespace:PFModel;程序集=PFModel")
我迷路了,不知道问题出在哪里。感谢您的任何帮助或提示。
<UserControl x:Class="PFPromoEditor.UserControls.CenterEditor"
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:PFPromoEditor.UserControls"
xmlns:wpfTool="clr-namespace:Xceed.Wpf.Toolkit;assembly=Xceed.Wpf.Toolkit"
xmlns:pf="clr-namespace:PFModel;assembly=PFModel"
mc:Ignorable="d"
d:DesignHeight="450" d:DesignWidth="800">
<Grid>
<Border BorderBrush="#FF000000" Margin="2" Padding="5" BorderThickness="1,1,1,1" CornerRadius="8,8,8,8">
<ContentControl>
<ContentControl.Resources>
<DataTemplate DataType="{x:Type pf:Promotion}">
<TextBox Text="Promotion DATA type" />
</DataTemplate>
<DataTemplate DataType="{x:Type pf:Casino}">
<TextBox Text="Casino DATA type" />
</DataTemplate>
<DataTemplate DataType="{x:Type pf:Progressive}">
<TextBlock Text="Progressive DATA type" />
</DataTemplate>
<DataTemplate DataType="{x:Type pf:Detail}">
<TextBox Text="Detail DATA type" />
</DataTemplate>
</ContentControl.Resources>
</ContentControl>
</Border>
</Grid>
<local:CenterEditor x:Name="CenterContent" DataContext="{Binding ElementName=promoMenu,Path=MySelectedItem }"/>
回答第一个问题,该控件已使用促销、赌场、促销或详细信息的实体正确设置了数据上下文。
我也尝试过使用绑定(bind)属性,例如:
<DataTemplate DataType="{x:Type pf:Progressive}">
<Grid>
<TextBlock Text="Progressive DATA type" />
<TextBox Text="{Binding Path=Detail.Title, FallbackValue= 'Select any Item in list to edit'}"/>
</Grid>
</DataTemplate>
还是什么都没有,一片空白。
我也刚刚放置了类似的内容:
<TextBox Text="{Binding Path=Detail.Title, FallbackValue= 'Select any Item in list to edit'}"/>
在上面的代码中,如下所示:
</DataTemplate>
</ContentControl.Resources>
<TextBox Text="{Binding Path=Detail.Title, FallbackValue= 'Select any Item in list to edit'}"/>
</ContentControl>
文本框绑定(bind)很好,实体就在那里,我得到了预期的数据。
这不是数据绑定(bind)问题。我有上下文并且有合适的对象。
我想到了一些我需要尝试的其他事情。让我回复你。
最佳答案
事实证明,我做错的事情(除了顽固地认为自己认为错误的事情,并试图在凌晨 3 点解决我的问题,以及过度思考总体问题之外)还遗漏了:
内容=“{绑定(bind)}”
顺便说一句,我在评论中错过了哪些方式,我记得读过 datacontext,那是因为我感到疲倦和沮丧。
解决问题的是对内容控件的修改
<ContentControl Content="{Binding}" >
关于wpf - 没有根据 ContentControl 中的数据类型点击我的数据模板,为什么不呢?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49546821/