作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
所以我想要的是当SelectedModel.TechName
更新后它会物理保存到模型中,这样只要应用程序正在运行,它就会保留用户输入的任何内容。
我有 2 次观看 SelectedModel.TechName
在两种 View 中都被调用。它从模型中提取数据,但是当我更改 View 时,数据会重置。
有什么建议吗?
编辑:我试图使输入的数据持久化,我认为设置值会这样做但是每次我在 View 之间更改时都会重置数据。事实上,它会闪烁数据然后将其重置。
DefaultView.Xaml 中的字段
<StackPanel Grid.Row="0" Grid.Column="6" Grid.ColumnSpan="1" Margin="5 5 5 0">
<TextBox Name="techName" Text="{Binding SelectedModel.TechName,Mode=TwoWay}" BorderBrush="#FF4A5780" Grid.RowSpan="2"/>
</StackPanel>
<TextBlock x:Name="TextUpdate" Grid.Column="5" HorizontalAlignment="Left" Margin="41,0,0,0"
Grid.Row="1" Text="{Binding SelectedModel.TechName}" TextWrapping="Wrap" VerticalAlignment="Center"/>
DataModel.cs 模型文件
namespace callFlow.Models
{
public class DataModel : INotifyPropertyChanged
{
public event PropertyChangedEventHandler PropertyChanged;
private string techName;
public DataModel()
{
}
public string TechName
{
get { return techName; }
set { techName = value;
OnPropertyChanged();
}
}
private void OnPropertyChanged([CallerMemberName] string techName = null)
{
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(techName));
}
}
}
DefaultViewModel.cs
namespace callFlow.ViewModels
{
public class DefaultViewModel : INotifyPropertyChanged
{
public event PropertyChangedEventHandler PropertyChanged;
public DefaultViewModel() { }
private ObservableCollection<DataModel> model = new ObservableCollection<DataModel>();
private DataModel selectedModel;
private DataModel _SelectedModel;
public DataModel SelectedModel
{
get { return _SelectedModel ?? (_SelectedModel = new SelectedModel()); }
set { _SelectedModel = value;
OnPropertyChanged(); }
}
public void changeSelectedModel(DataModel newSelectedModel)
{
SelectedModel.TechName = newSelectedModel.TechName;
}
private void OnPropertyChanged([CallerMemberName] string techNameVM = null)
{
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(techNameVM));
}
}
}
最佳答案
在你的绑定(bind)上,你有
UpdateSourceTrigger=Explicit
在
Text="{Binding SelectedModel.TechName,Mode=TwoWay,
UpdateSourceTrigger=Explicit}"
当你这样做时,你必须编写代码来更新源属性。这是 viewmodel 属性。
关于c# - 从 ViewMode/Viewl MVVM 发出保存模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63348088/
所以我想要的是当SelectedModel.TechName更新后它会物理保存到模型中,这样只要应用程序正在运行,它就会保留用户输入的任何内容。 我有 2 次观看 SelectedModel.Tech
我是一名优秀的程序员,十分优秀!