Там должно быть больше к этой проблеме.Мы воспроизвели вашу настройку, и событие команды запускается каждый раз, независимо от порядка StackPanels (в основном так, как вы ожидаете, что он будет работать).
Можете ли вы предоставить любой источник из вашей ViewModel (в частности, относительно того, каккоманда создана / использована)?Описание XAML, для случая, который терпит неудачу, не ясно.Можете ли вы предоставить точную копию Xaml, когда он не срабатывает?Это может быть определенная комбинация панелей на вашем компьютере.Одно неправильное закрытие, и он потерпит неудачу (например, если он случайно выйдет за пределы stackPanel1).
Наше воспроизведение (которое работает независимо от порядка расположения панелей):
Xaml:
<UserControl.Resources>
<SilverlightApplication1:ViewModel x:Key="vmUserMasterData"/>
</UserControl.Resources>
<Grid x:Name="LayoutRoot">
<StackPanel DataContext="{StaticResource vmUserMasterData}" Grid.Column="1" Height="320" HorizontalAlignment="Left" Margin="4,6,4,0" Name="stackPanel1" VerticalAlignment="Top" Width="491">
<StackPanel Height="31" Name="stackPanel3" Orientation="Horizontal" Width="440">
<sdk:Label Content="Username" Height="28" Name="label2" Width="74" />
<TextBox Height="23" Name="textBox2" Width="365" Text="{Binding Username, Mode=OneWay}" />
</StackPanel>
<StackPanel Height="40" Name="stackPanel4" Orientation="Horizontal" Width="440">
<Button Content="Update User Data" Name="button1" Height="23" Width="440" Command="{Binding Path=UpdateDataCommand}"/>
</StackPanel>
</StackPanel>
</Grid>
Код модели представления:
using System.Windows.Input;
using Microsoft.Practices.Prism.Commands;
namespace SilverlightApplication1
{
public class ViewModel
{
public ICommand UpdateDataCommand { get; set; }
public string Username { get; set; }
public ViewModel()
{
Username = "Woof!";
UpdateDataCommand = new DelegateCommand<string>(
(x) =>
{
int dog = 1; // breakpoint here
});
}
}
}