2012-02-14 2 views
1

를 통해 템플릿의 부모 컨트롤에서 속성을 가져 내가 가진 다음 XAML트리거

<ComboBox Margin="5" Width="150" Name="languageComboBox"> 
    <ComboBoxItem Content="Russian" Tag ="1" IsSelected="True"/> 
    <ComboBoxItem Content="English" Tag="2"/> 
</ComboBox> 

<DataGrid Name="VulnersDatagrid" ItemsSource="{Binding ...}"> 
    <DataGrid.Columns> 
      <DataGridTemplateColumn Header="Заголовок" Width="*" CanUserSort="True" SortMemberPath="Vulner.DefaultDescription.Title"> 
      <DataGridTemplateColumn.CellTemplate> 
       <DataTemplate> 
         <TextBlock Name="testTextBox" Margin="5,0" Text="My example Text" VerticalAlignment="Center"/> 
       </DataTemplate> 
      </DataGridTemplateColumn> 
    </DataGrid.Columns> 
</DataGrid>    

어떻게 내가이 languageComboBox에서 항목을 선택 변경할 때 languageComboBox에서 텍스트 각 행에 testTextBox의 텍스트를 변경할 수 있습니다 트리거를 사용으로?

업데이트 : 공격!

같은 그 STANDART 솔루션
<TextBlock Text="{Binding ElementName=languageComboBox, Path=SelectedValue.Content}" Name="testTextBox" Margin="5,0" VerticalAlignment="Center"/> 

Dosnot 작업 할 수 있도록 콤보와 TextBlock의는 개의 다른 DataTemplates에있다!

+0

Привет, Сергей! 정확히 대답은 아니지만 모든 논리를 코드 숨김으로 이동하지 않는 이유는 무엇입니까 (MVVM을 사용하고 있다면 ViewModel로)? 언어 모음과 선택한 언어가 포함 된 속성을 가질 수 있으며 원하는 언어로 바인딩 할 수 있습니다. XAML에 해당 기능을 적용하는 데 어려움이 있습니까? – icebat

답변

1

는 속성을 추가하고 (제 경우 윈도우에서) 조상에 결합함으로써 작업을 얻었다. 뷰 모델에서

재산권 :

public object SelectedValue 
    { 
     get { return _selectedValue; } 
     set 
     { 
      _selectedValue = value; 
      OnPropertyChanged("SelectedValue"); 
     } 
    } 
    private object _selectedValue; 

바인딩 :

<TextBlock Text="{Binding Path=SelectedValue.Content, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type Window}}}" /> 
+0

예, 전에이 해결책을 찾았지만 답을 찾지 못했습니다. –

0

당신은 그것을 바인딩 할 수 있습니다 :

자네 말이 맞아
<TextBlock Text="{Binding ElementName=languageComboBox, Path=SelectedValue.Content}" Name="testTextBox" Margin="5,0" VerticalAlignment="Center"/> 
+0

아니요, TextBlock과 ComboBox가 다른 DataTemplates에 있기 때문에 작동하지 않습니다. 그럴 경우 - 그램은 "languageComboBox를 찾을 수 없습니다"오류로 컴파일되지 않습니다. –