3

ItemTemplateプログラムでのを作成したいと思いComboBoxます(トピックが言うように)。

現在、私はItemTemplateXAMLを使用しています。

<Style x:Key="ComboBox_EntityCreation_GroupSelect_Style" TargetType="{x:Type ComboBox}">
    <Setter Property="ItemTemplate">
        <Setter.Value>
            <DataTemplate>
                <TextBlock>
                        <TextBlock.Text>
                            <MultiBinding StringFormat="{}{0}    {1} Mitglied(er)">
                                <Binding Path="Name"/>
                                <Binding Path="MemberCount"/>
                            </MultiBinding>
                        </TextBlock.Text>
                </TextBlock>
            </DataTemplate>
        </Setter.Value>
    </Setter>
</Style>

XAMLに対する私の憎しみの結果として、XAMLなしで結果を取得したいと思います。

これを行うことは可能ですか?

4

2 に答える 2

3

これをオンザフライで変換しました。動作するかどうかを確認してください。

Style style = new Style(typeof(ComboBox));
var d = new DataTemplate();

MultiBinding mb = new MultiBinding();
mb.StringFormat = "{0} {1} Mitglied(er)";
mb.Bindings.Add(new Binding("Name"));
mb.Bindings.Add(new Binding("MemberCount"));

FrameworkElementFactory textElement = new FrameworkElementFactory(typeof(TextBlock));
textElement.SetBinding(TextBlock.TextProperty, mb);
d.VisualTree = textElement;

style.Setters.Add(new Setter(ComboBox.ItemTemplateProperty, d));
this.Resources.Add("ComboBox_EntityCreation_GroupSelect_Style", style);

FrameworkElementFactory を使用して、DataTemplate をその VisualTree に割り当てることができます。

于 2012-09-30T16:09:46.493 に答える
1

コードによるテンプレートの生成は、ファクトリ (つまり、FrameworkElementFactory) を介して行われます。FrameworkElement 型でファクトリを生成し、ファクトリのメソッドを介してバインディングなどを設定できます。

同様の質問と簡単な例が msdn で提供されています

于 2012-09-30T16:01:46.760 に答える