我试图创建一个跟踪JobItems的应用程序。在应用程序中,用户点击“New Job”按钮创建一个JobItem。然后弹出一个新窗口(NewJobWindow),用户必须填写关于作业的信息。所需的一些信息有多个值。例如,您可以在工作项目中添加多个(字符串)业务单位。我所做的是为用户添加一个列表框来添加其中的所有业务单元。我不知道该怎么做的是绑定这个业务单元的列表框,这样每次我在其中添加一个项目时,JobItem中的Observable Collection BusinessUnits会在我单击提交按钮时添加相同的项目。我需要知道如何使用数据绑定来做到这一点。我已经搜索谷歌寻找类似的答案,但找不到任何。将列表框绑定到WPF中的类型字符串的Observable集合
编辑:
这是我在我的JobItem类,我需要一个用户在NewJobWindow提交多个BusinessUnits每次都得到更新:
public ObservableCollection<string> BusinessUnit
{
get { return businessUnit; }
set
{
if(!BusinessUnit.Equals(value))
{
businessUnit = value;
OnPropertyChanged("BusinessUnit");
}
}
}
这是什么JobWindow在xaml中看起来像在列表框中添加商务单元。我创建了一个ValidatingListBox只是这样我就可以验证用户插入列表框:
<Label Grid.Column="0" Grid.Row="5">Business Unit:</Label>
<my:ValidatingListBox Grid.Column="1" Grid.ColumnSpan="1" Grid.Row="5" Grid.RowSpan="1" x:Name="businessUnitBox" SelectionMode="Multiple" SelectionChanged="ValidatingListBox_SelectionChanged" ItemsSource="{Binding Path=BusinessUnit}" >
<my:ValidatingListBox.ValidationListener>
<Binding RelativeSource="{RelativeSource FindAncestor, AncestorType=Window}" Path="BusinessUnit" Mode="TwoWay">
<Binding.ValidationRules>
<my:ListBoxValidationRule ValidatesOnTargetUpdated="True" ></my:ListBoxValidationRule>
</Binding.ValidationRules>
</Binding>
</my:ValidatingListBox.ValidationListener>
</my:ValidatingListBox>
用户需要一个UI来在窗口内添加业务单元,这就是为什么我需要在列表框中添加项目,然后需要更新对象内的集合。我将如何引用JobItem对象中的集合?请检查我的编辑,也许你会明白我想要做的更好。 – Erika
@Erika,我强烈建议你阅读关于MVVM模式。 UI只是一个演示文稿。逻辑(即“添加业务单位”)必须驻留在视图模型中,而不是视图(UI)。 – Dennis