TextBlock с изчислена стойност за свързване на данни не се актуализира

Имам текстов блок, който се свързва с двойно свойство, наречено „AdminTime“ в моя клас JobItem. AdminTime изчислява общите административни часове, които са в наблюдаема колекция, наречена TimeLog. Използвам текстово поле, за да добавя тези администраторски часове в класа JobItem. Ето намаления код:

<TextBlock Style="{StaticResource TextBlockStyle}" Grid.Row="1" Grid.Column="1" Name="adminHrs" Text="{Binding Path=AdminTime, UpdateSourceTrigger=Explicit, Mode=OneWay, StringFormat={}{0:0.00}}" />
<TextBox Style="{StaticResource textBoundStyle}" Name="adminTimeTxtBox" Grid.Row="3" Grid.Column="1"  />
<Button Style="{StaticResource addTimeStyle}" Name="addAdBtn" Grid.Column="1" Grid.Row="3" Click="addAdBtn_Click" />
<Button Style="{StaticResource subTimeStyle}" Name="subAdBtn" Grid.Column="1" Grid.Row="3" Click="subAdBtn_Click" />

А за кода отзад имам манипулатора за щракване на бутона addTime. Моля, имайте предвид, че разбирам, че моят UpdateSourceTrigger вече е включен изрично и че не трябва да актуализирам своя източник, но просто проверявах дали ще помогне на проблема ми:

public static readonly DependencyProperty AdminTimeProperty =
        DependencyProperty.Register("AdminTime", typeof(double),
        typeof(UpdateJobDialog));
private void addAdBtn_Click(object sender, RoutedEventArgs e)
    {
        AddHours();
    }

    private void AddHours()
    {
        item.AddTime(emp.UserType, emp.UserId, DateTime.Now, double.Parse(adminTimeTxtBox.Text));
        BindingExpression adHr = adminHrs.GetBindingExpression(TextBlock.TextProperty);
        adHr.UpdateSource();
    }

и в моя JobItem Class имам този код:

public double AdminTime
    {
        get
        {
            double newTime = 0.00;
            if (TimeLog != null)
            {
                foreach (HoursWorked hw in TimeLog)
                {
                    if (hw.EmployeeType == "Admin")
                        newTime += hw.Hours;
                }
            }
            adminTime = newTime;
            return adminTime;
        }

        set 
        {
            if (AdminTime != value)
            {
                adminTime = value;
                OnPropertyChanged("AdminTime");
            }
        }
    }

public void AddTime(string employeeType, string userId, DateTime datePosted, double hours)
    {
        HoursWorked newLog;
        newLog = new HoursWorked(employeeType, userId, datePosted, hours);
        TimeLog.Add(newLog);

    }

public ObservableCollection<HoursWorked> TimeLog
    {
        get { return timeLog; }
        set
        {
            if (!TimeLog.Equals(value))
            {
                timeLog = value;
                OnPropertyChanged("TimeLog");
            }
        }

    }

Моят текстов блок се свързва, когато изляза от прозореца и след това го отворя отново, това, което искам, е моят текстов блок да се актуализира, след като щракна върху addAdBtn. Не искам да се налага да отварям диалоговия прозорец, за да мога да видя моя административен текстов блок и бутон, да добавя часа, да затворя диалоговия прозорец и да го отворя отново, за да видя актуализиран текстов блок.


person Erika    schedule 08.06.2012    source източник


Отговори (1)


Всъщност го разбрах, просто трябваше да променя тригера на източника на актуализиране на двупосочен.

person Erika    schedule 08.06.2012