如何将xbf文件添加到visual studio项目中

我已经为Windows Universal Platform(Win 10 UWP)创建了一个类库。

该库包含一些UserControls。

当我从这个库中添加dll到Win 10 UWP应用程序,并使用UserControls时,它会在我发布的另一个问题中给出一个XamlParseException。

但是当我引用整个项目时,没有例外,我可以使用UserControl。 这可能是因为当我引用dll文件时,有些xbf文件未添加到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; } } } 

XAML: –

         

我直接在另一个应用程序中使用控件,如 –

 CustomPopupControl myctrl = new CustomPopupControl(); myctrl.OpenPopup(); 

除了Thomas的答案,您还需要在项目的Properties页面下的Build配置中选中“ Generate library layout ”选项。 在此处输入图像描述

我们需要引用的文件:

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

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

当我尝试在“InitializeComponent()”方法上使用UserControl时,它只抛出一个xaml解析exception

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

尝试将构造函数定义为public而不是internal。

此外,你的第二个构造函数调用base,但我不确定为什么你需要它/如果它不需要任何参数。

试试这段代码:

 public sealed partial class CustomPopupControl : UserControl { public CustomPopupControl() { this.InitializeComponent(); Debug.WriteLine("CustomPopupControl"); } 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; } } } 

谢谢,