当我写:时
<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