Caliburn Micro:Progressbar不会将更改后的值报告给操作

时间:2011-12-26 11:10:25

标签: wpf mvvm caliburn.micro caliburn

Progressbar和Caliburn Micro

大家好,

这是我使用Caliburn的第一个项目,所以我可能会遗漏一些东西。

我有下面的xaml和viewmodel。该视图包含一个填充为100%的进度条,它会报告方法ProgressBar的更改。 该方法按预期触发,但其Value参数始终为0.0 我深入研究了源代码并且依赖属性被正确传递并包含%(例如22.45546),但由于某种原因我不理解参数不受限制并保持0.0

非常感谢任何帮助,因为更好地了解Caliburn是我的首要任务。

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 个答案:

答案 0 :(得分:1)

发生的是0.0是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