0

こんにちは、コードビハインドでデータテンプレートの落下を実現するのを手伝ってください

<TreeView Name="OrderTree" DataContext="{Binding ordersTree}" ItemsSource="{Binding}">
    <TreeView.Resources>
        <HierarchicalDataTemplate 
              ...
        </HierarchicalDataTemplate>
        <DataTemplate DataType="{x:Type ordVM:OrderedDataCollectionVM}">
            <ListView Name="orderedListView" Margin="0,5,0,0" ItemsSource="{Binding GridData}">
                <ListView.View>
                    <GridView>
                        <GridViewColumn DisplayMemberBinding="{Binding Number}" Width="20" />
                        <GridViewColumn Header="{x:Static lang:ViewTextResource.product_name}" DisplayMemberBinding="{Binding Product.Name}" Width="150" />
                        <GridViewColumn Header="{Binding GridHeaders.[0]}" CellTemplate="{StaticResource GridViewComboBox1}" Width="120"/>
                        <GridViewColumn Header="{Binding GridHeaders.[1]}" CellTemplate="{StaticResource GridViewComboBox2}" Width="120"/>
                    </GridView>
                </ListView.View>
            </ListView>
        </DataTemplate>
    </TreeView.Resources>
</TreeView>

列数がデータに依存する GridView を持つ ListView を使用して、TreeView のコード ビハインドで DataTemplate を作成したいと考えています。

4

1 に答える 1

0

これを見てください。それはあなたが望むもののように見えます。

興味深い部分:

DataTemplate template = new DataTemplate();  

template.VisualTree = new FrameworkElementFactory(typeof(Path));  

template.VisualTree.SetBinding(Path.StrokeProperty, new Binding("Stroke"));  
template.VisualTree.SetBinding(Path.StrokeThicknessProperty, new Binding("StrokeThickness"));  
template.VisualTree.SetBinding(Path.FillProperty, new Binding("Interior"));  
template.VisualTree.SetBinding(Path.DataProperty, new Binding("Geometry"));  

必要に応じて編集するだけです。

于 2012-08-15T08:56:12.553 に答える