Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/silverlight/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用户控件上的数据绑定仅部分工作(silverlight)_Silverlight_Data Binding_User Controls - Fatal编程技术网

用户控件上的数据绑定仅部分工作(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}" />