我试图通过代码将ComboBox中的TextBlock绑定。我能够成功绑定文本块但由于某些原因,TextBlock不显示文本值。
我有检查所选值的机制,在那里我没有任何问题地获得所选值。
总而言之,我的绑定工作正常,但我错过了一些东西,因此textblock没有显示与其绑定的文本。
这是我用于绑定的代码: 其中“lObjTextBlock”是ComboBox内的TextBlock。
TextBlock lObjTextBlock = (TextBlock)ComboBox.ItemTemplate.LoadContent();
Binding lObjBinding = new Binding();
lObjBinding.Path = new PropertyPath("[" + lObjMap.PropertyName + "]");
lObjTextBlock.SetBinding(TextBlock.TextProperty, lObjBinding);
这是TextBlock的XAML:
<my:HComboBox Name="cmbRefDoctor">
<my:HComboBox.ItemTemplate>
<DataTemplate>
<TextBlock x:Name="txtRefDoctorName" />
</DataTemplate>
</my:HComboBox.ItemTemplate>
</my:HComboBox>
再一次:我的问题是TextBlock没有显示正在设置的任何Text althought值。
愿意得到所有可能的建议。提前谢谢。
答案 0 :(得分: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);
这里我使用ob作为双重集合通过绑定源
分配给textproperty<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>
你可以分配,
如果它是组合框或列表框
此处Person是类名,或在combobox itemsource
中设置类名