用户控制数据上下文使用不同



当我写:时

    <UserControl>
        <UserControl.DataContext>
            <loca:DataBindingDemo></loca:DataBindingDemo>
        </UserControl.DataContext>
        <TextBox   Text="{Binding Path=CurrentTime}" Height="30" Background="Aqua" Margin="133,141,169,140"></TextBox>
    </UserControl>

带有xmlns:loca="clr namespace:MyClock"

这是当前的,没有问题,但当我写:

 <UserControl  DataContext="{Binding Source=clr-namespace:MyClock.DataBindingDemo}">
        <!--
        <UserControl.DataContext>
            <loca:DataBindingDemo></loca:DataBindingDemo>
        </UserControl.DataContext>
        -->
        <TextBox   Text="{Binding Path=CurrentTime}" Height="30" Background="Aqua" Margin="133,141,169,140"></TextBox>
    </UserControl>

    <UserControl  DataContext="{Binding  Source=StaticResource, Path=clr-namespace:MyClock.DataBindingDemo}">
        <!--
        <UserControl.DataContext>
            <loca:DataBindingDemo></loca:DataBindingDemo>
        </UserControl.DataContext>
        -->
        <TextBox   Text="{Binding Path=CurrentTime}" Height="30" Background="Aqua" Margin="133,141,169,140"></TextBox>
    </UserControl>

它不起作用!为什么?

提前谢谢。

它不起作用!为什么?

clr-namespace:用于创建到自定义类和程序集的命名空间映射,不能像标记扩展中那样直接使用,它是而不是命名空间前缀。

编辑:不能像那样在标记扩展中直接使用程序集中的本地类型。

首先,您必须创建一个名称空间映射,就像您在以下问题中所做的那样:xmlns:local="clr-namepsace:YOUR_ASSEMBLY_NAME.NAMESPACE_CONTAINING_TYPE_YOU_WANT"

然后你可以在标记扩展中使用它们,比如:

<UserControl DataContext="{Binding Source=local:MyClock.DataBindingDemo}">
//                                          ^
//                                          |
//                                   Notice namespace using here

最新更新