2011-10-11 62 views
1

我正在創建一個自定義ItemsControl,其中嵌套項目使用ElementName綁定到另一個控件。對於標準的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約束力不更長的工作。有沒有其他人看到這個問題,並知道如何解決它?

任何幫助極大的讚賞。

+0

發佈您的CustomItemsControl的代碼會很有幫助。 –

+0

添加了上面的代碼。 –

回答

1

爲什麼你需要你的CustomControl的xaml文件。你只需要在您的本地命名空間中像這樣從ItemsControl-

public class CustomItemsControl : ItemsControl 
    { 

    } 

繼承創建一個類,並根據需要它應該工作.. !!

+0

XAML的原因是我想要對該控件的用戶隱藏模板的特定佈局。但是,刪除InitializeComponent()的效果很好。你知道爲什麼刪除它修復它嗎? –

+3

InitializeComponent()爲給定的自定義控件註冊'NameScope',並且覆蓋'NameScope'失去'ElementName'的相關性。 http://msdn.microsoft.com/en-us/library/ms746659.aspx –

相關問題