[英]How to access a code behind property of ResourceDictionary in another XAML file?
现状:有资源字典Class1.xaml用x背靠代码隐藏类的Class1.cs:类。 类Class1.cs中有属性MyHeight 。
目标:在XAML中访问Property MyHeight 。
问题:它不会编译并给出下一个错误:
引发异常:PresentationFramework.dll中的'System.Windows.Markup.XamlParseException'其他信息:'在'System.Windows.StaticResourceExtension'上提供值引发了异常。 行号“ 13”和行位置“ 41”。
解决方法:它可以在C#代码中工作。
注意:它适用于单独的Class或UserControl,但我需要ResourceDictionary。
问题:如何在MainWindow.xaml中访问Class1.cs类的 MyHeight属性 ?
Class1.xaml:
<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="clr-namespace:WpfApplication2"
x:Class="WpfApplication2.Class1">
将Class1.cs:
partial class Class1
{
public Class1()
{
InitializeComponent();
}
public double MyHeight
{
get { return 20; }
set { }
}
}
MainWindow.xaml:
<Window.Resources>
<local:Class1 x:Key="MyClass"></local:Class1>
</Window.Resources>
<Grid>
<Ellipse Fill="Red" Width="100" Height="{Binding Source={StaticResource MyClass}, Path=MyHeight}"></Ellipse>
</Grid>
MainWindow.xaml.cs:
public partial class MainWindow : Window
{
public MainWindow()
{
this.Resources.Add("key", new Class1());
MessageBox.Show(((Class1)this.Resources["key"]).MyHeight.ToString()); // Works
InitializeComponent();
}
}
<Window.Resources>
<ResourceDictionary>
<local:Class1 x:Key="MyClass" />
</ResourceDictionary>
</Window.Resources>
缺少的是ResourceDictionary
标记。
这也可以(代替上面的方法):
public Class1()
{
InitializeComponent();
Add("MyHeight", 20d);
}
InitializeComponent
重置Resources
字典,该字典解释您的“这在代码中起作用”-如果之后尝试检索“键”,则不会得到它。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.