2013-10-26 3 views
0

을 받고 난 TextBlock의를 도청 동안윈도우 폰 8 ImageBrush와 경로

<Grid Width="160" x:Name="grd"> 
         <Grid.Background> 
          <ImageBrush x:Name="img" ImageSource="Assets/Icons/tab-inactive.png" /> 
         </Grid.Background> 
         <TextBlock x:Name="txtacticve" Text="Rating" Tap="TextBlock_Tap_1" /> 
        </Grid> 

는 탭 이벤트가 called.how에게 것이 코드가 난 뒤에 코드에서이 탭 이벤트에 imagesource의 전체 경로를 얻을 수 있나요? 내 코드 숨김 이벤트에서 imagesource를 얻는 방법을 잃어 버렸습니다.

+0

정말 당신이 요구하는 것이 아닙니까? –

+0

내가 textblock을 클릭하면 imagesource 값 "Assets/Icons/tab-inactive.png"가 필요합니다. – maztt

답변

3

하나 개의 솔루션은 다음과 하나가 될 수 있습니다. 뒤에 코드에서 다음

<Grid Width="160" x:Name="grd"> 
     <Grid.Background> 
      <ImageBrush x:Name="img" ImageSource="Assets/Icons/tab-inactive.png" /> 
     </Grid.Background> 
     <TextBlock x:Name="txtacticve" Text="Rating" Tap="TextBlock_Tap_1" Tag="{Binding ElementName=grd, Path=Background}" /> 
    </Grid> 

당신에게, 단지 : 당신의 Grid 첫 번째 부모 (재귀 C# 코드에 필요한 부모를 찾을 필요가 없습니다)이 아닌 경우는 뒤에 오히려 코드보다 XAML에 그것을 할 도움이 될 수 있습니다 캐스팅하여 TextBlock.Tag 속성을 다음과 같이 사용하십시오.

private void TextBlock_Tap_1(object sender, System.Windows.Input.GestureEventArgs e) 
{ 
    var textBlock = sender as TextBlock; 
    if (textBlock != null) 
    { 
     var test = ((BitmapImage)((ImageBrush)textBlock.Tag).ImageSource).UriSource.OriginalString; 
    } 
} 
0

시도해보십시오. 당신은 당신이 필요로하는 Grid.Background 특성에 TextBlock.Tag 속성을 바인딩 할 수 있습니다, 당신의 XAML 코드에서

:

private void TextBlock_Tap_1(object sender, System.Windows.Input.GestureEventArgs e) 
{ 
    var grid = (Grid)txtacticve.Parent; 
    var img = grid.Background; 
    var path = ((BitmapImage)(((ImageBrush)(img)).ImageSource)).UriSource.AbsolutePath; 
} 
+0

nops가 경로 선에서 작동하지 않습니다. – maztt