2012-05-23 51 views
0

製作一個易於使用的UserControl,我嘗試創建一個簡單的UserControl,該應用程序將由我的應用程序使用。爲了簡單起見,它應該有一個「標題」和一個佔位符,我想在這裏放置任何類型的控件。在我的Silverlight 4應用程序中通過屬性

<User Control ...> 
    <Grid x:Name="LayoutRoot"> 
    <TextBlock x:Name="TextBlockHeader" Text="{Binding Title}" /> 
    <ContentPresenter x:Name="ContentPresenterObject" /> 
    </Grid> 
</UserControl> 

後面的代碼中,我創建了一個屬性TextBlock的

public string Title 
{ 
    get { return (string)GetValue(TitleProperty); } 
    set { SetValue(TitleProperty, value); } 
} 

public static readonly DependencyProperty TitleProperty = DependencyProperty.Register("Title", typeof(string), typeof(MyAccordion), null); 

這樣的文字,我可以設置標題屬性,當我用我的應用程序的控制。

<local:MyAccordion Title="Test"/> 

但似乎,是在文本塊文本綁定=「{結合標題}」不會使文本「測試」,以顯示爲文本的TextBlocks。

我的問題是:如何使屬性標題顯示爲文本框文本,以及如何爲 - 任何類型的用戶控件包含 - contencontrol?

由於提前,
弗蘭克

回答

0

答案是ElementPropertyBinding。我需要在綁定中引用用戶控件,或者在構造函數中添加綁定。

創建XAML綁定:

<User Control ... x:Name="userControl"> 
    ... 
    <TextBlock x:Name="TextBlockHeader" Text="{Binding Title, ElementName=userControl}" /> 
</UserControl> 

創建構造函數的結合(代碼後面)

public MyUserControl() 
{ 
    // Required to initialize variables 
    InitializeComponent(); 

    TextBlockHeader.SetBinding(TextBlock.TextProperty, new System.Windows.Data.Binding() { Source = this, Path = new PropertyPath("Title") }); 
} 

我還需要找出如何添加子控件,但那是另一個問題。

0

也許控件或頁的DataContext的沒有設置。 - 首先你應該閱讀更多關於綁定(「http://www.silverlight.net/learn/data-networking/binding/data-binding-to-controls-(silverlight-quickstart)」)。如果您正在開發真正的項目並設計一些架構,那麼您應該閱讀關於MVVM模式。

+0

這是基本思考你理解Silverlight技術的第一步 –

+0

這解釋瞭如何綁定在後面的代碼中給定的數據。但我想將TextBlock.Text屬性與我的自定義Property TitleProperty綁定 – Aaginor

相關問題