Usercontrol基本属性绑定

时间:2010-12-13 15:15:03

标签: silverlight

HI,

我有一个Silverlight UserControl,我将 UserControl.Background 属性绑定到其中的border元素。我找到了一种简单的方法来绑定背景:

<UserControl x:Name="root"
    x:Class="TestProject.MyControl"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    mc:Ignorable="d"
    Background="Red"  >

   <Border x:Name="brdMain" Background="{Binding Path=Background, ElementName=root }" >
         etc... .... ...
   </Border>

问题在于我多次实例化UserControl。我收到以下错误:

Error: Unhandled Error in Silverlight Application 
Code: 2028    
Category: ParserError       
Message: The name already exists in the tree: root.     
File:      
Line: 0     
Position: 0     

还有其他更好的方法来绑定我的Usercontrol背景属性,而不必像我那样命名我的UserControl: x:Name =“root”

由于

2 个答案:

答案 0 :(得分:0)

...试

Background="{Binding Background, RelativeSource={RelativeSource AncestorType={x:Type UserControl}, Mode=FindAncestor}}"

编辑:

由于上述仅在WPF中有效(SL仅支持TemplatedParent和Self),因此可以采用不同的方法。您可以在DependencyProperty上创建propdpUserControl是Visual Studio中的IntelliSense片段),它会正确设置子Border.Background

我试图了解您为什么要在Background上设置UserControl而不是简单地在Border上设置UserControl并将{{1}}留空视觉姿态;允许它成为代表视觉效果的子控件的物理容器。

答案 1 :(得分:0)