2008-11-12 4 views
1

Silverlight ItemsControl에서 표시하는 문자열 목록이 있습니다. DataTemplate은 TextBlock이 자식 인 Border 컨트롤입니다. 항목에 해당하는 국경 통제에 어떻게 액세스 할 수 있습니까? 예를 들어 배경색을 변경하려면이 작업을 수행 할 수 있습니다.Silverlight ItemsControl의 항목에 해당하는 UI 요소 찾기

답변

0

ItemsControl.GetContainerForItemOverride 메서드를 재정의하고 개체 - 컨테이너 쌍을 사전에 저장할 수 있습니다.

2

더 쉬운 방법은 텍스트 블록의 부모를 잡고 테두리로 캐스팅하는 것입니다.

XAML 예제는 텍스트 상자의 부모를 잡아서의 국경에 배경을 설정

public Page() 
{ 
    InitializeComponent(); 

    items.ItemsSource = new string[] { "This", "Is", "A", "Test" }; 
} 

private void TextBlock_MouseEnter(object sender, MouseEventArgs e) 
{ 
    var tx = sender as TextBlock; 
    var bd = tx.Parent as Border; 
    bd.Background = new SolidColorBrush(Colors.Yellow); 
} 

private void TextBlock_MouseLeave(object sender, MouseEventArgs e) 
{ 
    var tx = sender as TextBlock; 
    var bd = tx.Parent as Border; 
    bd.Background = new SolidColorBrush(Colors.White); 
} 

뒤에

<Grid> 
    <ItemsControl x:Name="items"> 
     <ItemsControl.ItemTemplate> 
      <DataTemplate> 
       <Border> 
        <TextBlock MouseEnter="TextBlock_MouseEnter" MouseLeave="TextBlock_MouseLeave" Text="{Binding}" /> 
       </Border> 
      </DataTemplate> 
     </ItemsControl.ItemTemplate> 
    </ItemsControl> 
</Grid> 

코드 : 다음은이의 빠른 예입니다.