用户控件上的数据绑定仅部分工作(silverlight)
我不确定我在这里做错了什么。昨晚我花了一个小时想弄明白,也许我只是个哑巴 我创建了这个用户控件来显示带边框的文本,它使用数据绑定来填充样式和文本 我在主页上这样称呼它:用户控件上的数据绑定仅部分工作(silverlight),silverlight,data-binding,user-controls,Silverlight,Data Binding,User Controls,我不确定我在这里做错了什么。昨晚我花了一个小时想弄明白,也许我只是个哑巴 我创建了这个用户控件来显示带边框的文本,它使用数据绑定来填充样式和文本 我在主页上这样称呼它: <mynamespace:BorderedText x:Name="DateTime" Grid.Column="1" Grid.Row="0" BorderStyle="{StaticResource bor
<mynamespace:BorderedText x:Name="DateTime"
Grid.Column="1"
Grid.Row="0"
BorderStyle="{StaticResource borderStyle}"
LabelStyle="{StaticResource labelStyle}"
TextStyle="{StaticResource valueStyle}"
Label="Current Date/Time"
Text="N/A" />
----更新:
事实证明,这与正确连接的数据绑定是完全不同和无关的
在borderStyle中,我对后台属性使用了以下语法:
<Setter Property="Background">
<Setter.Value>
<SolidColorBrush>
<SolidColorBrush.Color>
<Color>
<Color.A>
100
</Color.A>
<Color.R>#95</Color.R>
<Color.B>#ED</Color.B>
</Color>
</SolidColorBrush.Color>
</SolidColorBrush>
</Setter.Value>
</Setter>
100
#95
#
这显然在设计师身上起作用,但在手机上却不起作用。
将其更改为:
<Setter Property="Background">
<Setter.Value>
<SolidColorBrush Color="#649500ED" />
</Setter.Value>
</Setter>
解决了这个问题你忘了一件事。。。边界的数据上下文! 为UserControl指定一个名称,然后可以向绑定中添加如下内容:
<TextBox Text="{Binding Path=MyText, ElementName=UserControlRoot}" />
这将起作用(至少它在WPF中对我起作用了,呵呵)边框的DataContext应该在usercontrol的初始值设定项中定义(尽管注释的和未注释的都不起作用)。给用户控件指定一个特定的名称不起作用,因为我需要在调用页面中多次重用该用户控件。如果我在usercontrol中指定了一个特定的名称,当我在调用方中为该控件指定一个x:name时,数据绑定再次中断。嗯,我不确定我是否理解你的意思。。为什么UserControl中的名称会影响它之外的任何东西?无论如何,如果不需要名称,可以将边框/文本块绑定到RelativeSource Find祖先类型UserControl。此外,初始值设定项中的datacontext似乎不正确。你是说控件是一个网格,而它不是。您可以这样做:DataContext=this;(我想,没有测试)如果您将usercontrol命名为external,那么会发生的情况是,该名称会覆盖分配给对象的内部名称。因此绑定元素name=“nameassignedinternally”中断。您可以在设计器中看到这种情况。此外,控件有一个包含边框的网格。无论如何,结果是完全不同的。请参见上述问题中的更新。解决了的!
<Setter Property="Background">
<Setter.Value>
<SolidColorBrush Color="#649500ED" />
</Setter.Value>
</Setter>
<TextBox Text="{Binding Path=MyText, ElementName=UserControlRoot}" />