我有一个已定义的类
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?
答案 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}"