【问题标题】:How to access textblock inside Datatemplate in combobox?如何在组合框中访问 Datatemplate 内的文本块?
【发布时间】:2012-09-26 08:12:24
【问题描述】:

我正在尝试通过代码在 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 虽然正在设置值。

希望获得所有可能的建议。提前致谢。

【问题讨论】:

    标签: c# silverlight binding combobox datatemplate


    【解决方案1】:

    这是绑定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中设置类名

    【讨论】:

      猜你喜欢
      • 2017-08-09
      • 2015-11-25
      • 2014-05-03
      • 2017-11-07
      • 2011-04-23
      • 2015-03-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多