2013-01-22 57 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就会处理剩下的东西