在WPF中,我們使用數據元素而不是UI元素。通過這個,我的意思是你的用戶將添加數據與這些新屬性相關。你的工作是顯示這些數據,甚至可能用於編輯。在這方面,與其他觀點沒有什麼不同。通常,我們通過聲明DataTemplate
s來顯示數據。
在你的情況,假設你有一個用戶已添加string
屬性,它們可以存儲在類似這樣的類:
public class CustomData // Implement the INotifyPropertyChanged interface here
{
public string Label { get; set; }
public string Value { get; set; }
}
然後將其顯示爲可編輯的數據,你只需要定義正確的DataTemplate
:
<DataTemplate x:Key="Template" DataType="{x:Type DataTypes:CustomData}">
<Grid Grid.IsSharedSizeScope="True">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" SharedSizeGroup="Label" />
<ColumnDefinition Width="Auto" />
</Grid.ColumnDefinitions>
<TextBlock Grid.Column="0" Text="{Binding Label}" />
<TextBox Grid.Column="1" Text="{Binding Value}" />
</Grid>
</DataTemplate>
這DataTemplate
將在綁定控件的Label
和Value
屬性的數據顯示數據項Grid
。 Grid.IsSharedSizeScope
和SharedSizeGroup
屬性將確保所有控件排列在一條直線上。
最後,數據這種類型的項目集合綁定到ItemsControl.ItemsSource
屬性來顯示他們:
<ListBox ItemsSource="{Binding YourCustomDataCollection}" />
你甚至可以Style
的ListBox
,這樣它看起來並不像一個ListBox
,讓你的自定義數據控件看起來像一列正常控件。
這是一個主觀的問題,這取決於用戶的意見...因此,這是堆棧溢出的主題,它幾乎肯定會被刪除,除非你編輯它使其少*基於觀點*。 – Sheridan
@Sheridan謝謝,我編輯過,你認爲它現在嗎? –
真的,這個網站通常是針對涉及用戶目前面臨的特定編程問題的問題......它真的不適合*我應該走哪條路*和哪個更好*類型問題。但是,由於您已經盡力使您的問題變得不那麼重要,所以我想認爲Stack Overflow社區會讓您休息一下,而不是關閉您的問題。 – Sheridan