0

私の問題は、CModul から 2 つのリストの CModul_I_O(Inputs,outputs) をバインドする方法がわからないことです。HierarchicalDataTemplate と datatemplates を使用して多くの方法を試しましたが、常にこの 2 つのリストの 1 つしかバインドできません。また、最初の CModul のリストのみが表示されます。

このような TreeView が必要です

    -Modul1
        -Inputs
            input1
            input2
            input3
        -outputs
            output1
            output2
            output3
    -Modul2
        -Inputs
            input1
            input2
            input3
        -outputs
            output1
            output2
            output3

私の2データクラス

public class CModul
{
    protected string sName, sKlasse;
    protected List<CModul_I_O> lInputs,lOutputs;

    public CModul()
    {
        sName = "";
        sKlasse = "";
        lInputs = new List<CModul_I_O>();
        lOutputs = new List<CModul_I_O>();
    }

    public string Name
    {
        get { return sName; }
        set { sName = value; }
    }
    ...

    public List<CModul_I_O> Inputs
    {
        get { return lInputs; }
        set { lInputs = value; }
    }
    public List<CModul_I_O> Outputs
    {
        get { return lOutputs; }
        set { lOutputs = value; }
    }
}

 public class CModul_I_O
{
    string sName, sVar, sKommentar;

    public CModul_I_O()
    {
        sName="";
        sVar="";
        sKommentar="";
    }

    public string Name
    {
        get { return sName; }
        set { sName = value; }
    }
    ....
 }

 List<CModul> lModule = new List<CModul>();

私が持っているxamlコード

 <Window.Resources>
 <DataTemplate x:Key="module"  DataType="{x:Type local:CModul_I_O}">
        <Grid>
            <Grid.ColumnDefinitions>
                <ColumnDefinition Width="150"></ColumnDefinition>
                <ColumnDefinition Width="150"></ColumnDefinition>
                <ColumnDefinition Width="150"></ColumnDefinition>
            </Grid.ColumnDefinitions>
            <TextBox Grid.Column="0" Margin="5" Text="{Binding Path=Name}"></TextBox>
            <TextBox Grid.Column="1" Margin="5" Text="{Binding Path=Kommentar}"></TextBox>
            <TextBox Grid.Column="1" Margin="5" Text="{Binding Path=Var}"></TextBox>
        </Grid>
    </DataTemplate>

</Window.Resources>
<Grid>
    <TreeView Name="TV_ModulListe" Grid.Row="0">
        <TreeView.Resources>
            <HierarchicalDataTemplate DataType="{x:Type local:CModul}"  ItemsSource="{Binding Inputs}" ItemTemplate="{StaticResource  module}">
                <Grid>
                    <Grid.ColumnDefinitions>
                        <ColumnDefinition Width="150"></ColumnDefinition>
                        <ColumnDefinition Width="150"></ColumnDefinition>
                    </Grid.ColumnDefinitions>
                    <TextBox Grid.Column="0" Margin="5" Text="{Binding Path=Name}"></TextBox>
                    <TextBox Grid.Column="1" Margin="5" Text="{Binding Path=Klasse}"></TextBox>
                </Grid>
            </HierarchicalDataTemplate> 
        </TreeView.Resources>
    </TreeView>
</Grid>
4

1 に答える 1

0

これは、このようなものを示していますか?

-Modul1
    -Inputs
        input1
        input2
        input3
-Modul2
    -Inputs
        input1
        input2
        input3

次のようなものが必要です。

public CModul()
{
    sName = "";
    sKlasse = "";

    categories = new List<CModul_Category>();
}

public CModul_Category()
{
    cName = "";

    ioList = new List<CModul_I_O>();
}

次のようになります。

<TreeView Grid.Column="0" ItemsSource="{Binding}">
    <TreeView.Resources>
        <HierarchicalDataTemplate 
            DataType="{x:Type local:CModul}"
            ItemsSource="{Binding categories}"
            >
            <StackPanel Orientation="Horizontal">
                <TextBlock Text="{Binding sName, Mode=OneTime}" Margin="2,0"/>
            </StackPanel>
        </HierarchicalDataTemplate>

        <HierarchicalDataTemplate 
            DataType="{x:Type local:CModul_Category}"
            ItemsSource="{Binding ioList">
            <StackPanel Orientation="Horizontal">
                <TextBlock Text="{Binding cName, Mode=OneTime}" Margin="2,0"/>
            </StackPanel>
        </HierarchicalDataTemplate>
        <HierarchicalDataTemplate 
            DataType="{x:Type local:CModul_I_O}">
            <StackPanel Orientation="Horizontal">
                <TextBlock Text="{Binding sName, Mode=OneTime}" Margin="2,0"/>
            </StackPanel>
        </HierarchicalDataTemplate>
于 2013-09-11T10:43:57.847 に答える