1

コードを介して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がテキストを表示しないことです。

すべての可能な提案を取得したいと思います。前もって感謝します。

4

1 に答える 1

0

これは、データテンプレート内のコントロールをバインドする方法の1つです。

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);

ここでは、ソースをバインドすることによってtextpropertyに割り当てるダブルコレクションとしてobを使用しました

<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はクラス名であるか、コンボボックスitemsourceでクラス名を設定します

于 2013-01-18T08:19:48.000 に答える