【发布时间】:2019-04-24 22:57:59
【问题描述】:
我已经为 Windows 通用平台(Win 10 UWP)创建了一个类库。
该库包含一些用户控件。
当我将此库中的 dll 添加到 Win 10 UWP 应用程序并使用 UserControls 时,它会给出 XamlParseException,如 here in another question I posted 所述
但是当我引用整个项目时,没有例外,我可以使用 UserControl。这可能是因为当我只是引用 dll 文件时,有一些 xbf 文件没有添加到 Win 10 应用程序项目中。
在某个项目中,我需要手动将xbf文件添加到Win 10 app项目中,无法引用整个项目,只能引用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();
【问题讨论】:
-
你的问题解决了吗?
标签: c# windows-8 windows-store-apps windows-10 win-universal-app