Привязка ElementName для элементов в пользовательском ItemsControl - PullRequest
1 голос
/ 11 октября 2011

Я пытаюсь создать собственный ItemsControl, в котором вложенные элементы используют привязку ElementName к другому элементу управления. Для стандартного ItemsControl это работает нормально, а привязка работает как положено

<ItemsControl>
    <TextBox Text="{Binding Text, ElementName=test, UpdateSourceTrigger=PropertyChanged}"/>
</ItemsControl>
<TextBox x:Name="test"/>

Однако, как только я перехожу к использованию пользовательского элемента управления, наследующего от ItemsControl, как указано ниже

<!-- CustomItemsControl.xaml -->
<ItemsControl x:Class="MyControl.CustomItemsControl"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"/>

<!-- CustomItemsControl.xaml.cs -->
namespace MyControl
{
    public partial class CustomItemsControl 
    {
        public CustomItemsControl()
        {
            InitializeComponent();
        }
    }
}

<!-- Window.xaml -->
<local:CustomItemsControl>
    <TextBox Text="{Binding Text, ElementName=test, UpdateSourceTrigger=PropertyChanged}"/>
</local:CustomItemsControl>
<TextBox x:Name="test"/>

Тогда привязка ElementName больше не работает. Кто-нибудь еще видел эту проблему и знает, как ее решить?

Любая помощь с благодарностью.

1 Ответ

1 голос
/ 11 октября 2011

Зачем вам нужен файл xaml для вашего CustomControl.Вам просто нужно создать класс в вашем локальном пространстве имен, подобный этому, который наследуется от ItemsControl-

public class CustomItemsControl : ItemsControl
    {

    }

И он должен работать как нужно .. !!

...