按下按钮重新评估CommandParameter

时间:2013-04-19 09:27:22

标签: wpf

这是一个简短的问题。我有一个像这样定义的XAML:

<ComboBox Height="25" Width="150" Margin="10,0,0,0" VerticalAlignment="Top"
HorizontalAlignment="Left" ItemsSource="{Binding Path=Simulations}"
IsSynchronizedWithCurrentItem="True" SelectedItem="{Binding Path=Simulation}"/>

<ScrollViewer HorizontalAlignment="Stretch" VerticalAlignment="Stretch"
HorizontalScrollBarVisibility="Auto" VerticalScrollBarVisibility="Auto"
Content="{Binding Path=Simulations.CurrentItem.OptionsPanel}"/>

<Button Content="Simulate" Height="23" HorizontalAlignment="Center" 
Margin="0,0,0,20"  VerticalAlignment="Bottom" Width="75"
Command="{Binding Path=Simulations.CurrentItem.SimulateCommand}"
CommandParameter="{Binding Path=Simulations.CurrentItem.CommandParameter}"/>

我想要实现的是当用户从组合框中选择模拟时,会显示一个面板,其中包含特定于所选模拟的控件。每个模拟都有自己独特的参数集,因此,每个模拟都需要一个独特的“模拟”命令。上面的XAML几乎完全按照要求工作。当用户选择模拟时,将特定用户控件插入到ScrollViewer中,并为该按钮设置适当的命令。我遇到的问题是CommandParameter。它在模拟选择后立即进行评估,但此时大多数选项仍然为空,因为用户还没有机会修改它们。所以,基本上,我需要的是强制CommandParameter在按下按钮时重新评估。也许有人可以提供帮助,或建议更好地实现我想要实现的功能?

1 个答案:

答案 0 :(得分:0)

假设您的CommandParameterSimulation类的属性,您需要确保您的Simulation类将CommandParameter属性实现为DependencyProperty,否则Simulation类本身应该实现INotifyPropertyChanged已在其CommandParameter媒体资源上发送更改通知。

如果实现了这些方法中的任何一种,则CommandParameter属性应在更改时更新按钮的命令属性