这是一个简短的问题。我有一个像这样定义的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在按下按钮时重新评估。也许有人可以提供帮助,或建议更好地实现我想要实现的功能?
答案 0 :(得分:0)
假设您的CommandParameter
是Simulation
类的属性,您需要确保您的Simulation类将CommandParameter属性实现为DependencyProperty
,否则Simulation类本身应该实现INotifyPropertyChanged
已在其CommandParameter
媒体资源上发送更改通知。
如果实现了这些方法中的任何一种,则CommandParameter属性应在更改时更新按钮的命令属性