2012-10-05 2 views
1

코드를 통해 ComboBox 내에서 TextBlock을 바인딩하려고합니다. 텍스트 블록을 성공적으로 바인딩 할 수 있지만 몇 가지 이유로 TextBlock에서 텍스트 값을 표시하지 않습니다.콤보 박스의 Datatemplate 내부에서 textblock에 액세스하는 방법은 무엇입니까?

나는 선택한 값을 확인하는 메카니즘을 가지고 있으며, 거기에서 아무런 문제없이 선택된 값을 얻고있다.

결론적으로 내 바인딩은 정상적으로 작동하지만 무언가를 놓치고 있으므로 텍스트 블록에 바인딩 된 텍스트가 표시되지 않습니다.

이것은 바인딩을 위해 사용하고있는 코드입니다. 여기서 "lObjTextBlock"은 ComboBox 내부의 TextBlock입니다. 다시 한번

<my:HComboBox Name="cmbRefDoctor"> 
<my:HComboBox.ItemTemplate> 
    <DataTemplate> 
       <TextBlock x:Name="txtRefDoctorName" /> 
    </DataTemplate> 
</my:HComboBox.ItemTemplate> 
</my:HComboBox> 

:

TextBlock lObjTextBlock = (TextBlock)ComboBox.ItemTemplate.LoadContent(); 

Binding lObjBinding = new Binding(); 

lObjBinding.Path = new PropertyPath("[" + lObjMap.PropertyName + "]"); 

lObjTextBlock.SetBinding(TextBlock.TextProperty, lObjBinding); 

는 TextBlock에 대한 XAML입니다 내 문제는 TextBlock의 어떤 텍스트 althought 값이 설정되고 표시되지 않는 것입니다.

가능한 모든 제안을 얻고 싶습니다. 미리 감사드립니다.

답변

0

는 여기 DataTemplate을

this.DataContext = Person; 

Binding binding = new Binding(); 
binding.Source = ob; 
DataTemplate dtemp = (DataTemplate)Resources["PointTemp"]; 
Border bdr = dtemp.LoadContent() as Border; 
TextBlock tblk = bdr.Child as TextBlock; 
tblk.SetBinding(TextBlock.TextProperty, binding); 

안에 내가

<UserControl.Resources> 
    <DataTemplate x:Key="PointTemp"> 
     <Border Margin="0,23,0,0" Background="Transparent"> 
      <TextBlock Text="{Binding}" Foreground="White" FontSize="28" HorizontalAlignment="Center" VerticalAlignment="Center" TextAlignment="Center"/> 
     </Border> 
    </DataTemplate> 
</UserControl.Resources> 

그리고 할당 할 수있는 소스에 바인딩하여 이중 모음으로 산부인과가 textproperty에 할당 사용 컨트롤을 결합하는 방법 중 하나

입니다

콤보 박스 또는 목록 상자 인 경우

여기 사람이 클래스 이름입니다. e, 또는 콤보 박스 아이템 소스에 클래스 이름을 설정하십시오.

관련 문제