Связывание базовых свойств Usercontrol - PullRequest
0 голосов
/ 13 декабря 2010

HI

У меня есть Silverlight UserControl, где я связываю свойство 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>

Проблема в том, что когда я запускаю свой 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 голосов
/ 31 октября 2014

в Silverlight 5 имеется относительное связывание предков - http://tonychampion.net/blog/index.php/2011/12/7th-day-of-silverlight-ancestor-relative-source-binding/

0 голосов
/ 13 декабря 2010

Try ...

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

РЕДАКТИРОВАТЬ:

Поскольку вышеприведенное действительно только в WPF (SL поддерживает только TemplatedParent и Self), можно использовать другой подход. Вы можете создать DependencyProperty (propdp - это фрагмент IntelliSense в Visual Studio) на UserControl, который установит дочерний элемент Border.Background соответствующим образом.

Я пытаюсь понять, почему вы хотите установить Background на UserControl, а не просто установить его на Border и оставить UserControl пустым от визуальной позиции; позволяя ему быть физическим контейнером дочерних элементов управления, которые будут представлять визуалы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...