2013-01-22 58 views
0

我需要創建,將採取一個.ini文件,該文件將包含的元素使用WPF沒有數據綁定?

  • 分鐘
  • 最大
  • 默認

值的應用程序,允許用戶編輯這些值並保存一個新的.ini文件。由於.ini文件不能包含指定組中的不同元素,因此GUI需要動態生成。 從我所讀到的關於WPF的知識來看,它主要基於數據綁定和通知屬性更改。

因爲我的視圖模型需要適應不同數量的變量我不會有能力綁定到屬性,我打算附加一個事件處理程序的所有文本框,將選擇相應的驗證規則時,文本框失去焦點或按下Enter鍵。之後,如果它通過了驗證,那麼它應該相應地更新模型,並使用相應值的模型更新視圖。

我想知道這是否聽起來像一個有效的想法,是否有類似的設計模式,我應該閱讀或應該我完全擺脫WPF?

回答

2

,您仍然可以使用綁定 - 因爲WPF支持項目模板,因爲你使用的是MVVM模式你可以創建一個虛擬機列表中的每個子項(你甚至不需要做到這一點你可以直接在每個列表項的模板中綁定到DTO或業務對象)

我現在正在做一個類似的事情 - 我有一個客戶端的材料測試列表,他們想要一個變量數和每種材料的測試類型,但也能夠調整和更改這些測試每個訂單爲他們的客戶

他們實際上有兩種測試類型,但描述更簡單的o F中的例(不要求孩子的虛擬機本身)我剛剛創建一個具有項模板的ItemsControl

<ItemsControl ItemsSource="{SomeBinding}"> 
    <ItemsControl.ItemTemplate> 
     <DataTemplate> 
      <StackPanel> 
       <TextBlock Text="{PropertyDescription}" /> 
       <TextBox Text="{PropertyValue}" /> 
      </StackPanel> 
     </DataTemplate> 
    </ItemsControl.ItemTemplate> 
</ItemsControl> 

在這種情況下,模型只包含屬性名稱/值的列表,並顯示它們在堆疊面板中(您可能需要使用ItemsPanelTemplate來設置ItemPanel。顯然你可以有一個擴展的ItemsControl,允許DataTemplateSelector爲每種類型顯示不同的數據模板(實際上WPF已經支持每種類型的數據模板)。

我目前使用Caliburn.Micro實際上做了很多關於你建立兒童模板 - 如果你創建綁定物品作爲虛擬機,你可以做這樣簡單的東西:

<ItemsControl x:Name="SomeBinding" /> 

只要SomeBinding屬性中的子項都是虛擬機本身(而這又是另一個故事:P),CM就會處理剩下的東西