gpt4 book ai didi

c# - 从 ViewMode/Viewl MVVM 发出保存模型

转载 作者:行者123 更新时间:2023-12-03 10:56:06 25 4
gpt4 key购买 nike

所以我想要的是当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 属性。
由于您不这样做,因此当您在其中键入文本时, View 模型将不会更新。
您应该将其从绑定(bind)中删除或编写更多代码。

关于c# - 从 ViewMode/Viewl MVVM 发出保存模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63348088/

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