2009-04-08 7 views
0

두 번째 UserControls를 만들었습니다. 두 번째 UserControls는 첫 번째 개체에서 선택한 개체에 대한 세부 정보를 표시하는 개체 목록을 표시합니다. 첫 번째 컨트롤에 종속성 속성을 만들고 각 UserControl을 내 Resources 컬렉션에 선언 된 개체에 바인딩했습니다. 나는 이것에 대해 설명하는 블로그 게시물을 보았지만 제대로 작동하지 않는 것 같습니다. XamlParseException이 발생합니다. 재미있는 점은 바인딩을 설정했을 때 예외가 발생한다는 것입니다. Mode = TwoWay가 첫 번째 UserControls에 있습니다. 여기에 코드 ...XamlParseException을 유발하는 종속성 속성

Page.xaml

<UserControl.Resources> 
    <local:Item x:Key="SelectedItem" /> 
</UserControl.Resources> 

... 

<controls:ItemList 
    SelectedItem="{Binding Mode=TwoWay, Source={StaticResource SelectedItem}}">      
</controls:ItemList > 

... 

<controls:ItemDetails 
    DataContext="{Binding Source={StaticResource SelectedItem}}">      
</controls:ItemDetails> 

ItemList.xaml.cs

public partial class ItemList: UserControl 
{ 
    public ItemList() 
    { 
     InitializeComponent(); 
    } 

    public static readonly DependencyProperty SelectedItemProperty = 
     DependencyProperty.Register("SelectedItem", typeof(Item), typeof(ItemList), new PropertyMetadata(new Item())); 
    public Item SelectedItem 
    { 
     get { return (Item)GetValue(SelectedItemProperty); } 
     set { SetValue(SelectedItemProperty , value); } 
    } 

어떤 제안은 환영입니다!

답변

2

Xaml의 모양이 정확하지 않습니다. 양방향으로 묶어야하는 부동산이 없습니다. 소스에 정의 된 오브젝트에 바인드하려고하지만 바인드 할 자원의 특성을 지정하지 않았다는 것을 나타냅니다. 이 경우 SelectedItem 리소스는 Item 유형의 객체이며 Item의 속성에 바인딩해야합니다. 항목 속성의 이름 값이있는 경우, 귀하의 XAML은 다음과 같이 수 있도록 :

SelectedItem="{Binding Value, Source={StaticResource SelectedItem}, Mode=TwoWay}" 

대신이 시도 :

SelectedItem="{Binding SelectedItem, Mode=TwoWay}"  

IB를.

+0

위대한 설명. 감사! –