gpt4 book ai didi

c# - 只有当用户在 C# 中使用 MVVM 选择新项目时才会更改触发选择

转载 作者:行者123 更新时间:2023-12-03 10:27:05 24 4
gpt4 key购买 nike

问题

我已经为我的 Combo-box 设置了绑定(bind),其中包含和 SelectedItemItemSource它绑定(bind)到我的 ViewModel 属性。

<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;

从属性中可以看出,当它发生变化时,它会调用一个方法来做一些事情。

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

我只希望当用户单击框并更改为新项目时​​触发此方法。

最佳答案

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

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

关于c# - 只有当用户在 C# 中使用 MVVM 选择新项目时才会更改触发选择,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37411647/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com