2012-08-09 3 views
1

종속성 개체에 내용을 바인딩하는 contentcontrol이있는 사용자 정의 컨트롤을 만들려고합니다.xaml을 사용하여 사용자 정의 컨트롤 및 바인딩 데이터의 내용을 정의합니다.

XAML

을 다음과 같이 코드는
<ContentControl Grid.Column="1" HorizontalAlignment="Stretch" x:Name="NotifyContent" Content="{Binding ElementName=notifyBarCtrl, Path=Content, NotifyOnSourceUpdated=True}" /> 

C#을

public object Content 
{ 
    get { return (object)GetValue(ContentProperty); } 
    set { SetValue(ContentProperty, value); } 
} 

// Using a DependencyProperty as the backing store for Content. This enables animation, styling, binding, etc... 
public static readonly DependencyProperty ContentProperty = 
    DependencyProperty.Register("Content", typeof(object), typeof(NotifyBar)); 

제가하는 데 문제는하다 나는 텍스트를 결합 다음 XAML을 사용하여 TextBlock이 같은 내용을 정의 할 때 속성을 문자열로 변경하면 응용 프로그램의 문자열로 업데이트되지 않습니다.

내 응용 프로그램 코드는 다음과 같습니다.

XAML

<ctrl:NotifyBar DockPanel.Dock="Top" Background="White" HorizontalAlignment="Stretch" > 
    <ctrl:NotifyBar.Content> 
     <TextBlock Height="30" Text="{Binding ElementName=MainWindow, Path=NotifyMessage, Mode=TwoWay}" HorizontalAlignment="Stretch" /> 
    </ctrl:NotifyBar.Content> 
</ctrl:NotifyBar> 

C#을

public string NotifyMessage 
    { 
     get { return _NotifyMessage; } 
     set 
     { 
      if (_NotifyMessage != value) 
      { 
       _NotifyMessage = value; 
       OnPropertyChanged("NotifyMessage"); 
      } 
     } 
    } 

내가 누락 될 수 있습니다 또는 많이 주시면 감사하겠습니다 잘못했을 수도 무엇인지에 어떤 제안.

감사

[편집] 나는 그것이 UserControl을에 대한 내용을 무시되었다는 경고를 받았 었죠으로 NotifyContent에 컨텐츠 의존성 속성을 변경하지만 여전히 었소이 문제를 해결하기 때문에 내가 가진

답변

0

그래서 나는 그것이 내가 textblock 내에서 elementname을 사용하고 있었기 때문이라고 생각했습니다.

요소에 usercontrol의 DataContext를 설정하고 propertyit에 바인딩하면 작동합니다.

은 아래 참조 :

<ctrl:NotifyBar DataContext="{Binding ElementName=MainWindow}" DockPanel.Dock="Top" Background="White" HorizontalAlignment="Stretch" > 
    <ctrl:NotifyBar.Content> 
     <TextBlock Height="30" Text="{Binding Path=NotifyMessage, Mode=TwoWay}" HorizontalAlignment="Stretch" /> 
    </ctrl:NotifyBar.Content> 
</ctrl:NotifyBar>