如何将XBF文件添加到Visual Studio项目

ksh*_*dhi 4 c# windows-8 windows-store-apps win-universal-app windows-10

我为Windows通用平台(Win 10 UWP)创建了一个类库。

该库中包含一些UserControls。

当我从该库中将dll添加到Win 10 UWP应用程序并使用UserControls时,它给出了XamlParseException,如我在发布的另一个问题中所述

但是,当我引用整个项目时,也没有例外,我可以使用UserControl。据说发生这种情况是因为有些xbf文件在我仅引用dll文件时没有添加到Win 10应用程序项目中。

在某个项目中,我需要将xbf文件手动添加到Win 10应用程序项目中,我不能引用整个项目,只能引用dll并添加所需的文件。

我尝试在Visual Studio项目中创建一个文件夹并添加xbf文件,还尝试创建具有不同名称的文件夹,然后通过Windows资源管理器将xbf文件复制到“ bin”目录中。但是没有成功。

因此,如何手动将xbf文件添加到Windows 10 UWP项目?

更新1:-XAML和代码供参考

public sealed partial class CustomPopupControl : UserControl
{
    internal CustomPopupControl()
    {
        this.InitializeComponent();    //-------CRASHES HERE-------
    }

    internal CustomPopupControl() : base()
    {
        Debug.WriteLine("CustomPopupControl");
        //
        //do some stuff
        //
        //
    }

    private void OnPopupLoaded(object sender, RoutedEventArgs e)
    {
        this.Popup_Container.HorizontalOffset = (Window.Current.Bounds.Width - Grid_Child.ActualWidth) / 2;
        this.Popup_Container.VerticalOffset = (Window.Current.Bounds.Height - Grid_Child.ActualHeight) / 2;
    }

    internal void OpenPopup()
    {
        Debug.WriteLine("OpenPopup");
        Popup_Container.IsOpen = true;

        var currentFrame = Window.Current.Content as Frame;
        var currentPage = currentFrame.Content as Page;
        currentPage.IsHitTestVisible = false;

        Debug.WriteLine("OpenPopup Done");
    }

    private void OnLayoutUpdated(object sender, object e)
    {
        if (Grid_Child.ActualWidth == 0 && Grid_Child.ActualHeight == 0)
        {
            return;
        }

        double ActualHorizontalOffset = Popup_Container.HorizontalOffset;
        double ActualVerticalOffset = Popup_Container.VerticalOffset;

        double NewHorizontalOffset = (Window.Current.Bounds.Width - Grid_Child.ActualWidth) / 2;
        double NewVerticalOffset = (Window.Current.Bounds.Height - Grid_Child.ActualHeight) / 2;

        if (ActualHorizontalOffset != NewHorizontalOffset || ActualVerticalOffset != NewVerticalOffset)
        {
            Popup_Container.HorizontalOffset = NewHorizontalOffset;
            Popup_Container.VerticalOffset = NewVerticalOffset;
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

XAML:-

<UserControl
x:Class="MyLibrary.CustomPopupControl"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="using:MyLibrary"
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">

<Popup Name="Popup_Container" LayoutUpdated="OnLayoutUpdated">
    <Border BorderThickness="1" BorderBrush="{ThemeResource AppBarBorderThemeBrush}">
        <Grid Name="Grid_Child">
            <Grid Name="Grid_Content"  Height="300" Width="400" />
        </Grid>
    </Border>
</Popup>
Run Code Online (Sandbox Code Playgroud)

我直接在另一个应用中使用该控件,因为-

CustomPopupControl myctrl = new CustomPopupControl();
myctrl.OpenPopup();
Run Code Online (Sandbox Code Playgroud)

Fra*_*SFT 5

除了Thomas的答案外,您还需要在项目的“属性”页面下的“ 生成 ”配置中选中“ 生成库布局 ”选项。 在此处输入图片说明

我们需要参考的文件:

  • ClassLibrary1(类库名称)文件夹
    • ClassLibrary1.xr.xml
    • CustomPopupControl.xaml
  • ClassLibrary1.dll
  • ClassLibrary1.pri- >包资源索引文件

将这些文件复制到任何地方,UWP项目仅需要在Visual Studio中添加对ClassLibrary1.dll文件的引用,所有这些文件都会自动添加。

当我尝试在“ InitializeComponent()”方法上使用UserControl时,它只会引发xaml解析异常

添加引用时,可能缺少.pri文件。