我有一个类似于这样的XAML文件:
<!-- File1.xaml -->
<m:SomeName xmlns:m="clr-namespace:SomeNamespace">
...
</m:SomeName>
我有另一个XAML文件,我想在其中实例化File1.xaml
中定义的对象,并将其设置为File2.xaml
中定义的另一个对象的属性:
<m:SomeOtherName xmlns:m="clr-namespace:SomeNamespace">
<m:SomeOtherName.Property>
<!-- I want File1.xaml object here -->
</m:SomeOtherName.Property>
</m:SomeOtherName>
有什么想法吗?
答案 0 :(得分:1)
如果要对此对象使用XAML
,则此对象需要扩展DependencyObject
。最简单的方法是创建UserControl
:
<UserControl
x:Class="SomeNamespace.SomeName"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d"
d:DesignHeight="300"
d:DesignWidth="400">
<!-- Other XAML content -->
</UserControl>
在文件后面有自己的代码:
namespace SomeNamespace
{
public sealed partial class SomeName : UserControl
{
public SomeName()
{
this.InitializeComponent();
}
}
}
然后,您可以在应用的其他部分实例化控件:
<m:SomeOtherName xmlns:m="clr-namespace:SomeNamespace">
<m:SomeOtherName.Property>
<someNamespace:SomeName />
</m:SomeOtherName.Property>
</m:SomeOtherName>
答案 1 :(得分:1)
您应该在App.Xaml
文件中将此共享对象创建为Resource
。然后这两个文件中都会出现同一个对象。