将.net对象属性绑定到窗口属性
本文关键字:属性 窗口 绑定 对象 net | 更新日期: 2023-09-27 18:05:07
我有一个定义的类
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的窗口标签中,我声明了:
xmlns:viewModels="clr-namespace: testApp.ViewsModels"
在Windows.Resources
中我定义了一个ObjectDataProvider
<ObjectDataProvider x:key="myWindowSetting" ObjectType={x:Type viewModels:myWindowSettings}" />
我可以用它来绑定textBlock文本属性
<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类型的对象绑定到窗口?
尝试将窗口的DataContext设置为myWindowSetting
,通过使用以下问题的答案:
WPF将窗口标题绑定到ViewModel属性
也许这将工作。我认为问题在于上面的代码在知道资源myWindowSettings
之前初始化了窗口。如果您将ObjectDataProvider
对象放在其他地方,它也可以工作。但是要做到这一点,您需要编写更多的代码。
使用以下代码绑定数据-上下文
<Window.DataContext>
<viewModels:myWindowSettings x:Name="myWindowSetting" />
</Window.DataContext>
将标题属性绑定如下:
Title="{Binding Path = myWindowTitle, Mode=OneTime}"