【问题标题】:Binding FontFamily ViewModel's Property绑定 FontFamily ViewModel 的属性
【发布时间】:2013-12-11 21:59:26
【问题描述】:

我想将 TextBox 的 FontFamily 绑定到我在 ViewModel 上创建的属性

这是我的 XAML:

<TextBox Text="Test Font Binding" FontFamily="{Binding FontFirstContent}" />

这里是我的 ViewModel 中的属性:

public FontFamily FontFirstContent
{
    get { return new FontFamily("Verdana"); }
}

加载视图时,属性的 getter 会正确触发,但不会传递给视图。 除了这个之外,我认为所有绑定都在工作,所以我不明白它有什么问题?

编辑: 好的,它工作正常!我只是在处理错误的 FontFamily 对象.. 我用过:

System.Drawing.FontFamily

但 FontFamily 必须是类型:

System.Windows.Media.FontFamily

【问题讨论】:

  • 这很奇怪,我设置了一个快速项目。这个对我有用。您是否正确设置了 DataContext?
  • 你能把你的viewmodel、xaml中的代码粘贴到后面(如果有的话)吗?
  • 如果我不使用 ViewModel,它似乎也对我有用。所以如果我将我的属性放在我的视图代码后面并定义:DataContext = this;它正在工作。但如果我这样做: DataContext = new MyViewModel();它不起作用。很奇怪..
  • 我所做的是 DataContext = new MyViewModel();在后面的视图代码中并且有效。
  • FontFamily 在视图中的实际值是多少,根据例如窥探?

标签: c# wpf xaml mvvm


【解决方案1】:

这是我添加到 ResourceDictionary 的内容,旨在成为我的应用程序的默认样式:

<FontFamily x:Key="MyFontFamily">Segoe UI</FontFamily>

当你想使用它时,你可以像这样设置FontFamily属性:

<Label Content="Something" FontFamily="{DynamicResource MyFontFamily}"/>

别忘了把它放在ResourceDictionary 或任何控制资源中。

希望对你有帮助;

【讨论】:

  • 我知道 ResourceDictionary 中的样式,但就我而言,当用户执行某些操作时,我必须动态更改 FontFamily。我粘贴的代码不是我真正使用的代码。我对我的吸气剂做了一些其他测试。这就是为什么我在我的 ViewModel 中放置一个属性。谢谢
  • 您可以使用FindResource 方法动态更改它。这正是我所做的。我有 4 个 FontFamily 可以“动态”更改
猜你喜欢
  • 2011-08-26
  • 2013-06-25
  • 2011-02-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-07-20
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多