我写的时候:
<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>
with 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>
它不起作用!为什么呢?
提前感谢。
答案 0 :(得分:1)
它不起作用!为什么呢?
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