1

WPF には少し慣れていないので、ツリービューのコンテキストでいくつかのバインディングについて頭を悩ませようとしています。まず、いくつかのコード。

メイン ウィンドウで名前空間を追加します。

xmlns:WPFFM="clr-namespace:WPFFM"

私のクラスは、タイプを介してバインドしようとしています。

namespace WPFFM
{
    public class Asset
    {
        public string ID;
        public string name;
        public string room;
        public string description;

        public Asset(string AssetID, string AssetName, string AssetRoom, string AssetDescription)
        {
            ID = AssetID;
            name = AssetName;
            room = AssetRoom;
            description = AssetDescription;
        }
    }
}

私のリストと人口を持つ私のメインクラス。

namespace WPFFM
{
    /// <summary>
    /// Interaction logic for MainWindow.xaml
    /// </summary>
    public partial class MainWindow : Window
    {
        DBConnector dbConnector;
        public static List<Asset> assetList;

        public MainWindow()
        {
            InitializeComponent();
            Populate();
        }

        public void Populate()
        {
            assetList = new List<Asset>();
            dbConnector = new DBConnector();
            DataTable assetDatatable = new DataTable();


            assetDatatable = dbConnector.GetAssets();

            foreach (DataRow row in assetDatatable.Rows)
            {
                Asset assetToAdd = new Asset(row["assetID"].ToString(), row["assetName"].ToString(), row["assetRoomID"].ToString(), row["assetDescription"].ToString());
                assetList.Add(assetToAdd);
            }


            //assetTreeView.ItemsSource = assetList;

        }

    }
}

最後に私のツリービュー XAML;

TreeView x:Name="assetTreeView"   ItemsSource="{Binding assetList}">
                                    <TreeView.ItemTemplate>
                                        <HierarchicalDataTemplate  DataType="{x:Type WPFFM:Asset}" ItemsSource="{Binding assetList}">

                                            <Grid Background="LightSkyBlue"  Margin="2" Width="100" Height="24">

                                                <TextBlock Margin="2" Text="{Binding name}" VerticalAlignment="Center" FontWeight="Bold" />
                                            </Grid>

                                        </HierarchicalDataTemplate>
                                    </TreeView.ItemTemplate>
                                </TreeView>

バインドする方法をたくさん試しましたが、うまくいきません。私が収集したものから、ツリービューを資産(私のクラス)のリストにバインドし、データ型を資産のデータ型にバインドしています。次に、Asset クラスから公開された「name」プロパティを表示しようとしています。どこが間違っているのかよくわかりません。私はばかげて単純なものを見逃していますか?

編集: 一部の関数を mainwindow.xaml.cs から移動する必要がある可能性があるという事実を無視してください。この時点では、構造については説明しません。

4

1 に答える 1

2

WPF がバインドするものはすべて、フィールドではなくプロパティである必要があります。ここで欠けているもう 1 つのことは、DataContext の初期化です。それがなければ、バインディングは機能しません。

于 2013-06-07T12:33:39.300 に答える