gpt4 book ai didi

c# - 如何将 xbf 文件添加到 visual studio 项目

转载 作者:太空狗 更新时间:2023-10-30 01:33:19 27 4
gpt4 key购买 nike

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

库包含一些用户控件。

当我将此库中的 dll 添加到 Win 10 UWP 应用程序并使用 UserControls 时,它会给出 XamlParseException,如 here in another question I posted 所述

但是当我引用整个项目时,没有异常,我可以使用 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:-

<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>

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

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

最佳答案

除了 Thomas 的回答外,您还需要在项目属性页面下的构建配置中选中“生成库布局”选项。 enter image description here

我们需要引用的文件:

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

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

It just throws a xaml parse exception when I try to use the UserControl on the "InitializeComponent()" method

可能是添加引用时 .pri 文件丢失了。

关于c# - 如何将 xbf 文件添加到 visual studio 项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34260701/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com