我新的WPF所以請原諒我,如果我錯過了一些東西明顯我如何控件綁定到一個WPF的ListView列
我有以下的列表視圖控件(非培訓相關細節簡潔,刪除)
<ListView>
<ListView.View>
<GridView>
<GridViewColumn Header="Type" DisplayMemberBinding="{Binding Type}"/>
<GridViewColumn Header="Details" DisplayMemberBinding="{Binding Details}"/>
</GridView>
</ListView.View>
</ListView>
我將項目添加到這個列表視圖代碼後面
public void Add(LogEntry entry)
{
ListViewItem item = new ListViewItem();
item.Content = entry;
listView.Items.Add(item);
}
其中LogEntry是否有「類型」和「詳細信息」
公共字符串屬性到目前爲止,一切都很好,一切工作可愛的,但.. 我希望我的細節屬性是元素本身(文本框或包含各種類型的內容DockPanel中) 我如何可以綁定這個元素的列表列?
使用上面的代碼,更改「詳細信息」的元素,我只是得到列表框中(如System.Windows.Control.TextBox)類名作爲默認的單元格顯示屬性的ToString()值。 我已經使用了一個DataTemplate的例子,但我找不到將元素綁定到面板內容的示例。 控制不能在XAML被定義爲它的結構和內容是未知的,直到運行時
綁定是單程(I只需要顯示的列表中,不更新所述基本數據結構)
爲了使我問題更清楚,我想下面的列表項綁定
class LogEntry
{
public string Type {get;}
public DockPanel Details {get;} // This dock panel was created by code and contains
// various elements not predictable at compile time
}
我同意你的回答。綁定到模型的控件是一種不好的做法。道教應該使用'DataTemplates'和'DataTemplateSelector'在運行時決定正確的模板。 –
由於雷切爾,這正是我一直在尋找 有問題的數據是XML,可以包含文本和/或對象條目的列表。現在,我可以綁定是在面板的內容,我可以考慮模板選擇,對各類物體(該項目仍處於早期階段,因此也許以後...) – Taoist
@Taoist WPF實際上可以綁定到XML中的相同它會綁定到一個類,所以也許你可以使用它來獲得你的優勢。 – Rachel