2010-04-18 2 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> 

내가 이전의 UserControl에 매개 변수 "이름"을 통과하려고 어디 다른 컨트롤에서이 사용자 컨트롤을 사용하려고 ("헤더"

내 컨트롤이 같은 것입니다).

나는 단지 1 헤더가됩니다 같이 "목록 상자"를 만들 필요가 없습니다, 그래서 일을 피하려고 :

"사용자"계정을 전송하기 위해
  <ListBox x:Name="HeaderListBox" Grid.Row="0"> 
       <ListBox.ItemTemplate> 
        <DataTemplate> 
         <SilverlightApplication:Header/> 
        </DataTemplate> 
       </ListBox.ItemTemplate> 
      </ListBox> 

사용 :

HeaderListBox.ItemsSource = name; 

매개 변수를 한 번 전달하기 위해 ListBox 대신 사용할 수있는 다른 구조가 있습니까? 목록이 아니며 단지 헤더 일뿐입니다 ...

Thank you!

답변

1

이 코드는 당신이 그것을 할 기대하지 않습니다.
ListBox.ItemsSource는 컬렉션이어야하며, "name"은 String 유형이고 ListBox는 실제로 char 컬렉션에 바인딩되어 있다고 가정합니다. 2 다음 행을 변경

시도 적절한 데이터 바인딩 작동하도록 :

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

제 1 변화, 즉 집합이므로 (리스트 박스 등) ItemsControl에 여러 항목에 결합 될 필요가있다.
두 번째 변경은 UserControl이 속성 식별자 "name"을 알 수 없기 때문에 필요합니다. 왜냐하면 값을 할당했기 때문입니다. 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

:

당신은 데이터 바인딩과 함께 기본적인 문제가있는 것 같다

, 내가 당신이 Silverlight.net에 우수한 참고 자료의 일부를 검토 운영자 추천 할 수 있도록

0

당신은 직접 UserControl을에 DataContext -Property를 사용할 수 있습니다

<SilverlightApplication:Header DataContext="{Binding name}" /> 
관련 문제