当用户在C#中使用MVVM选择新项目时,仅更改了选择

时间:2016-05-24 11:00:24

标签: c# wpf mvvm

问题

我为我的Combo-box设置了绑定,其中包含与我的ViewModel属性绑定的SelectedItemItemSource

<ComboBox x:Name="cmb_cameraDevice" DisplayMemberPath="Name" IsSynchronizedWithCurrentItem="True" HorizontalAlignment="Stretch" Grid.Row="2" VerticalAlignment="Stretch" Background="{x:Null}" Foreground="#FFB03636" Grid.RowSpan="1" Grid.Column="5" Grid.ColumnSpan="3" ItemsSource="{Binding CameraDeviceList}" SelectedItem="{Binding SelectedCameraDevice}" />

public VideoCaptureDeviceInformation SelectedCameraDevice
{
    get { return _selectedCameraDevice; }
    set
    {
         selectedCameraDevice = value;
         OnPropertyChanged("SelectedCameraDevice");
         SelectedCameraDevice_Changed();

    }
}
private VideoCaptureDeviceInformation _selectedCameraDevice;

正如您可以从属性中看到的那样,当它发生变化时,它将调用一个可以执行某些操作的方法。

问题在于我的加载方法我填充了触发此属性的组合框,因此调用该方法。

我只想在用户点击框并更改为新项目时​​触发此方法。

1 个答案:

答案 0 :(得分:2)

因此,您不希望在第一次设置字段时触发该操作。然后检查它是否为null:

public VideoCaptureDeviceInformation SelectedCameraDevice
{
    get { return _selectedCameraDevice; }
    set
    {
         var oldVal = _selectedCameraDevice;
         _selectedCameraDevice = value;
         OnPropertyChanged("SelectedCameraDevice");
         if (oldVal != null)
         {
             SelectedCameraDevice_Changed();
         }
    }
}