保存用户首选项文件的建议位置是什么?是否有推荐的方法来处理用户偏好?
目前,我使用从typeof(MyLibrary).Assembly.Location作为默认位置返回的路径来存储应用程序生成或要求的文件.
编辑:我发现了两个相关/有趣的问题:
编辑#2:这只是像我这样以前从未使用过设置的人的笔记.设置是非常有用的,但我不得不做一大堆挖掘来弄清楚发生了什么(来自Python世界,而不是我使用的东西).事情变得复杂,因为我想保存字典,显然它们不能被序列化.设置似乎也存储在3个不同的文件中,具体取决于您的操作.还有一个app.config,user.config和settings.setting文件.所以这里有两个我觉得有用的链接:
我正在为我的媒体播放器制作用户可更改的设置,而我正在努力找到解决问题的优雅方案.
例如,我的一个设置 - 暂停视频的最后一帧,如果没有选中,它将继续通过播放列表,或者只有1个文件,重置它并在开始时暂停.
这就是我实现它的方式:
private void OnMediaEndedCommand()
{
if (GeneralSettings.PauseOnLastFrame)
{
MediaPlayer.SetMediaState(MediaPlayerStates.Pause);
return;
}
if (PlayListViewModel.FilesCollection.Last().Equals(PlayListViewModel.FilesCollection.Current) && !Repeat)
{
ChangeMediaPlayerSource(PlayListViewModel.ChangeCurrent(() => PlayListViewModel.FilesCollection.MoveNext()));
MediaPlayer.SetMediaState(MediaPlayerStates.Stop);
return;
}
ChangeMediaPlayerSource(PlayListViewModel.ChangeCurrent(() => PlayListViewModel.FilesCollection.MoveNext()));
}
Run Code Online (Sandbox Code Playgroud)
它包含在主窗口的ViewModel中,其中media元素是GeneralSettings.PauseOnLastFrame布尔属性.
此命令绑定如下:
<MediaElement ....>
<ia:Interaction.Triggers>
<ia:EventTrigger EventName="MediaEnded">
<ia:InvokeCommandAction Command="{Binding MediaEndedCommand}"/>
</ia:EventTrigger>
</ia:Interaction.Triggers>
</MediaElement>
Run Code Online (Sandbox Code Playgroud)
它有效,但很糟糕,我该如何以优雅的方式实现这样的设置系统呢?某些设置可能不是布尔值,它们可能有多个选项,有些可能仅在启动时应用,而其他设置如上图所示,基于事件.
在Windows窗体中,窗体的属性部分中有一个选项,用于在应用程序设置和窗体窗体之间建立绑定.
通常,我会最终有一个叫frmMyFormName_Location这是必需的,然后自动地更新设置和所有我需要做的是调用应用程序退出的Settings.Save()方法,保留位置.
有人可以在WPF中提供相同的例子,因为我一直无法弄清楚如何实现这一目标吗?
我有一个TabControl和它下面我有几个元素,如TreeView和DataGrid.当我展开树并调整数据网格列的大小时,如果我然后选项卡到另一个选项卡并返回,则忘记整个UI状态.我必须重新展开树并调整列的大小.
是否有一种合理且现有的方法来保存UI状态?我们把它分成 -