WPF - 将.NET对象属性绑定到窗口属性

时间:2016-08-31 20:26:37

标签: c# wpf

我有一个已定义的类

namespace testApp.ViewsModels
{
 public class myWindowSettings
 {
  public int myWindowHeight { get; set; }
  public String myWindowTitle { get; set; }
  public myWindowSettings()
   {
    myWindowTitle ="My Name Here";
    myWindowHeight =211;
   }
 }
}

并将其用作我的视图模型。 在我宣布的.xaml的Window标签内:

xmlns:viewModels="clr-namespace: testApp.ViewsModels"

Windows.Resources内,我定义了ObjectDataProvider

<ObjectDataProvider x:key="myWindowSetting" ObjectType={x:Type viewModels:myWindowSettings}" />

我可以使用它绑定到textBlock Text属性

<TextBlock x:Name="textBloxk" Text="{Binding Path=myWindowTitle, Source={StaticResource myWindowSetting}, Mode=OneTime}" />

但是当我尝试将它绑定到窗口属性

Title="{Binding Path=myWindowTitle, Source={StaticResource myWindowSetting}, Mode=OneTime}"

我有一个例外。抛出异常:

'System.Windows.Markup.XamlParseException' in PresentationFramework.dll.Additional information: 'Provide value on 'System.Windows.StaticResourceExtension' threw an exception.' 

行号...和行位置'9'。

如何将myWindowSettings类型的对象绑定到Window?

2 个答案:

答案 0 :(得分:0)

尝试使用以下问题的答案将窗口的DataContext设置为myWindowSetting

WPF Bind Window Title to ViewModel Property

也许这会奏效。我认为问题是上层代码在知道资源myWindowSettings之前初始化窗口。如果将ObjectDataProvider对象放在其他位置,它也可以工作。但是,为此,您需要更多的代码。

答案 1 :(得分:0)

使用以下代码绑定数据上下文

<Window.DataContext>
    <viewModels:myWindowSettings x:Name="myWindowSetting" />
</Window.DataContext>

绑定标题属性如下:

Title="{Binding Path = myWindowTitle, Mode=OneTime}"
相关问题