2010-04-18 26 views
0

我需要簡單地將屬性的內容提供給Silverlight中的自定義用戶控件。在Silverlight中,除了ListBox之外,還可以使用哪些結構進行綁定?

我的控制是這樣的:

<UserControl x:Class="SilverlightApplication.Header" 
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
mc:Ignorable="d" 
d:DesignWidth="300" d:DesignHeight="120"> 

<Grid x:Name="Header_Layout"> 
    <StackPanel x:Name="hiHeaderContent" Width="Auto" Margin="73,8,8,8"> 
     <TextBlock x:Name="User:" Text="{Binding name}" /> 
</StackPanel> 
</Grid> 

我嘗試使用此用戶控件從另一個控制,我嘗試通過參數「名稱」以前的用戶控件(「頭」 )。

我並不需要創建一個「列表框」,因爲我只會有1頭,所以我儘量避免這樣做:

  <ListBox x:Name="HeaderListBox" Grid.Row="0"> 
       <ListBox.ItemTemplate> 
        <DataTemplate> 
         <SilverlightApplication:Header/> 
        </DataTemplate> 
       </ListBox.ItemTemplate> 
      </ListBox> 

,以發送「用戶」賬戶使用:

HeaderListBox.ItemsSource = name; 

有沒有其他的結構可以用來代替ListBox來傳遞參數一次?它不會是一個列表,它只是一個標題...

謝謝!

回答

1

該代碼段不會做你希望它做什麼。
ListBox.ItemsSource需要是一個集合,sicne我假設「name」是String類型,ListBox真的綁定到一個chars集合。

嘗試改變2以下行適當數據綁定到工作:需要

1. HeaderListBox.ItemsSource = new string[] { name }; 
2. Text="{Binding}" 

的第一個變化,以便一個ItemsControl(如列表框)將被綁定到多個項目,即一個集合。
第二次更改是必需的,因爲UserControl無法知道屬性標識符「name」,因爲您只是分配了一個值。

好像您在使用數據綁定的基本問題,請允許我向您推薦回顧一些關於Silverlight.net優秀的參考材料: http://www.silverlight.net/learn/quickstarts/bindingtocontrols/ http://www.silverlight.net/learn/videos/all/databinding-and-datatemplates-in-xaml
http://www.silverlight.net/learn/videos/all/an-overview-of-databinding-and-datatemplates-using-expression-blend
http://www.silverlight.net/learn/videos/all/databinding-to-control-properties

0

您可以在用戶控件直接使用DataContext,物業:

<SilverlightApplication:Header DataContext="{Binding name}" /> 
相關問題