2010-12-13 51 views
0

HI,用戶控件的基本屬性綁定

我有一個Silverlight的用戶控件,我綁定UserControl.Background屬性,在它的邊界元素。我發現結合這樣的背景一個簡單的方法:

<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> 

與問題是,當我實例化我的用戶多次。我得到以下錯誤:

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

那麼,有沒有其他的到我的用戶背景屬性綁定,而不必命名我的用戶一樣,更好的辦法:X:NAME =「根」

感謝

回答

0

的Try ...

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

編輯:

由於上述是僅在WPF有效(SL僅支持TemplatedParent和個體經營)變化的方法可以採取。您可以在UserControl上創建一個DependencyPropertypropdp是Visual Studio中的IntelliSense片段),它將適當地設置子項Border.Background

我試圖理解爲什麼要設置BackgroundUserControl雖然與簡單地從視覺姿勢設定它的Border和離開UserControl空;允許它成爲代表視覺效果的兒童控制器的物理容器。

+0

不工作...得到以下錯誤: 屬性「AncestorType」式的RelativeSource找不到 – danbord 2010-12-13 15:27:43

+1

@danbord精氨酸... SL沒有按」 t支持FindAncestor;讓我看看是否有另一種方式 – 2010-12-13 15:30:59

+0

@danbord添加額外的詳細信息... – 2010-12-13 15:41:56

相關問題