【问题标题】:User Setting Not Changed用户设置未更改
【发布时间】:2013-01-21 07:57:01
【问题描述】:

这是我的 xaml:

SelectedItem="{Binding Source={StaticResource Settings}, Path=Default.Selected, Converter={StaticResource SelectedTabConverter}}"

我在 Convert() 和 ConvertBack() 中添加了 Console.WriteLine(),所以我可以看到他们正在做他们应该做的事情。但是,当我在将设置保存到 OnExit() 之前检查我的设置时,我看到设置没有更改。我认为这个绑定是双向的,我对 UI 所做的任何更改都应该同时更改设置。有什么想法吗?

【问题讨论】:

  • 您是否尝试将 Mode=TwoWay 添加到绑定中?
  • 是的,我做到了......它没有帮助

标签: c# wpf


【解决方案1】:

首先,如果不阅读您的previous question,很难判断您的问题是什么。

您已在应用的 ResourceDictionary 中创建了一个 Settings 对象作为资源。没有必要这样做。只需绑定到静态 Settings.Default 对象,如下所示(并在您的其他问题的答案中正确显示)。

{Binding Path=Selected, Source={x:Static properties:Settings.Default}}

其中 XML 命名空间 properties 引用了应用程序的 Properties 命名空间。

<Window ...
        xmlns:properties="clr-namespace:MyHomework__MVVM_.Properties"
        ... >

除此之外,您应该绑定到SelectedIndex 属性而不是SelectedItem。这样你就不需要转换器了。

SelectedIndex="{Binding Path=Selected, Source={x:Static properties:Settings.Default}}"

另见this question

【讨论】:

  • 很高兴看到人们在他们的 XAML 中使用 x:Static
  • 我应该把“+1”放在第一位,这样更清楚:) 例如,我将所有转换器设为单例,并使用x:Static 引用它们而不是通常的StaticResource 混乱.
  • 好吧,让Settings.Default 成为静态属性并不是我的设计。这只是在 WPF 项目中创建设置并在绑定表达式中访问设置的标准方式。
  • 感谢您清理并感谢您的链接。 UpdateSourceTrigger 正是我需要设置才能完成这项工作......我已经使用它几次了,当我偶然发现这个问题时,我不敢相信它没有出现在我身上。
猜你喜欢
  • 2017-11-18
  • 2019-12-28
  • 2011-01-31
  • 1970-01-01
  • 2015-09-17
  • 2011-04-25
  • 1970-01-01
  • 2017-12-04
  • 1970-01-01
相关资源
最近更新 更多