没有根据ContentControl中的数据类型命中我的数据模板,为什么不呢?

时间:2018-03-29 01:52:22

标签: wpf xaml data-binding entity-framework-6

我的datatemplates都没有根据DataContext的DataType显示。传递给UserControl的DataContext的实际对象是Entity(EntityFrameWork 6.0)。

我指定DataType =" {x:Type pf:Promotion}"这是实体所基于的POCO类的名称。

(的xmlns:PF =" CLR-名称空间:PFModel;装配= PFModel&#34)

我迷失在这里,不知道问题出在哪里。感谢任何帮助或提示。

<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 }"/>

对第一个问题的回答,控件的datacontext与促销,赌场,促销或细节的实体正确设置。

我也尝试过绑定属性,如:

  <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>

文本框绑定没问题,实体就在那里,我得到了预期的数据。

它不是数据绑定问题。我有上下文,我有一个合适的对象。

我想到了其他一些我需要尝试的事情。让我回复你。

1 个答案:

答案 0 :(得分:1)

事实证明我做错了(除了对我认为错误的事情感到顽固,并且试图在凌晨3点解决我的问题,并且一般都在思考问题)是遗漏:

内容= “{结合}”

我在评论中错过了BTW的方式,我记得读过datacontext,那是因为我感到疲倦和沮丧。

解决问题的是对内容控件的这种修改

MyFunction2()