Databinding controls to an object within an object
===

I have a window with a datacontext set to an JobItem object.  Within this window I have a few controls within a StackPanel, all of which is needed to be filled in to create an HoursWorked object within JobItem.  I then need to add this log within an ObservableCollection item of HoursWorked.  I only want a OneWayToSource binding on this, but when I check out a view of the ObservableCollection, the item is added, but it's properties are not set to what I have entered in the user controls.  On top of that, the controls already trigger the red outline on each control indicating that the validation isn't working, when I only want this to be triggered with a button click, even though I have Explicit set on UpdateSourceTrigger.  Here is what I have so far:

    <StackPanel.Resources>
        <my:HoursWorked x:Key="hwViewSource" />
    </StackPanel.Resources>

    <TextBox Name="analystTimeTxtBox">
        <Binding Source="{StaticResource hwViewSource}" Path="Hours" UpdateSourceTrigger="Explicit" Mode="OneWayToSource" NotifyOnValidationError="True">
            <Binding.ValidationRules>
                <my:NumberValidationRule ErrorMessage="Please enter a number in hours." />
            </Binding.ValidationRules>
        </Binding>
     </TextBox>

There is a separate area where you can specify which person you would like to designate hours to.  This is what the ComboBox is for:

    <TextBox Style="{StaticResource textBoundStyle}" Name="analystTimeTxtBox">
        <Binding Source="{StaticResource hwViewSource}" Path="Hours" UpdateSourceTrigger="Explicit" Mode="OneWayToSource" NotifyOnValidationError="True">
            <Binding.ValidationRules>
                <my:NumberValidationRule ErrorMessage="Please enter a number in hours." />
            </Binding.ValidationRules>
        </Binding>
    </TextBox>
                                                                                                                                

    <ComboBox DataContext="{StaticResource ChargeAssigneeViewSource}" Name="ChargeAssigneeBox" ItemsSource="{Binding}" Width="85">
        <ComboBox.SelectedItem>
            <Binding Source="{StaticResource hwViewSource}" Path="Worker" Mode="OneWayToSource" UpdateSourceTrigger="Explicit">
                <Binding.ValidationRules>
                    <my:ComboBoxValidationRule ErrorMessage="Please select an Assignee" />
                </Binding.ValidationRules>
            </Binding>
        </ComboBox.SelectedItem>
     </ComboBox>

In the code behind, when the window is first opened, the object is automatically created.

    private HoursWorked newLog = new HourseWorked;
    newLog = new HoursWorked();
    LabourPanel.DataContext = newLog; //This is the StackPanel that includes all the controls.

When each corresponding button is clicked, I assume the bind works and add it to the ObservableCollection:

    //this is just a method that the button calls when it is clicked.
    private void AddAnHours()
        {
            if (!ValidateElement.HasError(ChargeAssigneeBox))
            {
                if (!ValidateElement.HasError(analystTimeTxtBox))
                {
                    newLog = (HoursWorked)(LabourPanel.DataContext);
                    item.TimeLog.Add(newLog);
                    analystTimeTxtBox.Clear();
                    ChargeAssigneeBox.SelectedItem = null;
                }
            }
        }

And this is the static class that I use to validate the controls

    public static class ValidateElement
    {
        public static bool HasError(DependencyObject node)
        {
            bool result = false;
            if (node is TextBox)
            {
                TextBox item = node as TextBox;
                BindingExpression be = item.GetBindingExpression(TextBox.TextProperty);
                be.UpdateSource();
            }
            if (node is ComboBox)
            {
                
                ComboBox item = node as ComboBox;
                BindingExpression be = item.GetBindingExpression(ComboBox.SelectedItemProperty);
                be.UpdateSource();
            }
            if (node is DatePicker)
            {
                DatePicker item = node as DatePicker;
                BindingExpression be = item.GetBindingExpression(DatePicker.SelectedDateProperty);
                be.UpdateSource();
            }
            if (Validation.GetHasError(node))
            {
                // If the dependency object is invalid, and it can receive the focus,
                // set the focus
                if (node is IInputElement) Keyboard.Focus((IInputElement)node);
                result = true;
            }
            
            return result;

        }
    }
Thanks for all the help.                                        