实例化其他XAML文件中定义的对象

时间:2016-01-28 10:49:03

标签: wpf xaml

我有一个类似于这样的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>

有什么想法吗?

2 个答案:

答案 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。然后这两个文件中都会出现同一个对象。