我为我的Combo-box设置了绑定,其中包含与我的ViewModel属性绑定的SelectedItem
和ItemSource
。
<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;
正如您可以从属性中看到的那样,当它发生变化时,它将调用一个可以执行某些操作的方法。
问题在于我的加载方法我填充了触发此属性的组合框,因此调用该方法。
我只想在用户点击框并更改为新项目时触发此方法。
答案 0 :(得分:2)
因此,您不希望在第一次设置字段时触发该操作。然后检查它是否为null:
public VideoCaptureDeviceInformation SelectedCameraDevice
{
get { return _selectedCameraDevice; }
set
{
var oldVal = _selectedCameraDevice;
_selectedCameraDevice = value;
OnPropertyChanged("SelectedCameraDevice");
if (oldVal != null)
{
SelectedCameraDevice_Changed();
}
}
}