Caliburn Micro: Progressbar не сообщает об измененном значении действию - PullRequest
0 голосов
/ 26 декабря 2011

Progressbar и Caliburn Micro

Hello All,

Это мой первый проект, использующий Caliburn, поэтому я мог что-то упустить.

У меня есть ниже xaml и viewmodel.Представление содержит индикатор выполнения, заполненный до 100%, и сообщает об изменениях метода ProgressBar.Метод запускается, как и ожидалось, но его параметр Value всегда равен 0,0. Я вхожу в исходный код, и свойство зависимости правильно передается и содержит% (например, 22.45546), но по какой-то причине я не понимаю, что параметр не ограничени остается 0.0

Любая помощь очень ценится, потому что лучше узнать Калибурн - мой приоритет номер 1.

XAML

<ProgressBar Width="100" Height="20" x:Name="ProgressBar">
  <ProgressBar.Triggers>
    <EventTrigger
        RoutedEvent="ProgressBar.Loaded">
      <BeginStoryboard>
        <Storyboard>
          <DoubleAnimation
              Storyboard.TargetName="ProgressBar"
              Storyboard.TargetProperty="Value"
              From="0"
              To="100"
              Duration="0:0:5" />
        </Storyboard>
      </BeginStoryboard>
    </EventTrigger>
  </ProgressBar.Triggers>
</ProgressBar>

C #

public void ProgressBar(double Value)
{
      // Value is always 0.0 ??
}

1 Ответ

1 голос
/ 26 декабря 2011

То, что происходит, - это значение по умолчанию для Double.
Вы просите двойное число, но Caliburn не знает, что в него вставить, поэтому возвращает значение по умолчанию.

Из документации вы должны посмотреть на этот синтаксис:

<ProgressBar
            Width="100"
            Height="20"
            x:Name="ProgressBar">
            <i:Interaction.Triggers>
                <i:EventTrigger EventName="ProgressChanged">
                    <cal:ActionMessage MethodName="ProgressBar"> 
                            <cal:Parameter Value="{Binding ElementName=ProgressBar, Path=Value}" />
                    </cal:ActionMessage>
                </i:EventTrigger>
            </i:Interaction.Triggers>
            <ProgressBar.Triggers>
                <EventTrigger RoutedEvent="ProgressBar.Loaded">
                    <BeginStoryboard>
                        <Storyboard>
                            <DoubleAnimation Storyboard.TargetName="ProgressBar"
                                             Storyboard.TargetProperty="Value"
                                             From="0"
                                             To="100"
                                             Duration="0:0:5" />
                        </Storyboard>
                    </BeginStoryboard>
                </EventTrigger>
            </ProgressBar.Triggers>
        </ProgressBar>

Где i: - System.Windows.Interactivity

...