【发布时间】:2021-04-21 01:01:21
【问题描述】:
我在一个库中有一组UserControls,但由于该库与MainWindow 位于不同的命名空间中,我似乎无法获得一个UserControl 来检索List<features>来自MainWindow。
我怀疑这是因为UserControl 不知道MainWindow,而且它不是故意的,因为它在 DLL 库中。由于UserControl 在 DLL 中,它应该与命名空间无关,但仍然能够获得所需的内容。
所以下面我将一些 XAML 和相关 C# 代码隐藏在您可以在 UserControls ListBox 上看到的位置,我正在尝试从 MainWindow 检索 features 列表。
<UserControl x:Class="FlatControls.MyListBox"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:local="clr-namespace:FlatControls"
mc:Ignorable="d"
d:DesignHeight="34" d:DesignWidth="100" MaxHeight="34" MaxWidth="100" x:Name="root">
<ListBox x:Name="listBox">
</UserControl>
public MyListBox()
{
InitializeComponent();
listBox.Items = ???????????
}
<Window x:Class="MyApp.MainWindow"
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"
xmlns:local="clr-namespace:WpfApp4"
xmlns:FC="clr-namespace:FlatControls;assembly=FlatControls"
mc:Ignorable="d"
Title="MainWindow" Height="1000" Width="1900" WindowState="Maximized" RenderOptions.BitmapScalingMode="Fant">
<Grid>
xyz
</Grid>
<Window>
namespace MyApp
{
public List<string> features = new List<string>();
public MainWindow()
{
InitializeComponent();
features.Add("Concave");
features.Add("Convex");
}
}
任何帮助都将不胜感激,无论是通过绑定还是代码隐藏:D
【问题讨论】:
-
我不知道您的代码中的确切问题是什么,但已经存在类似的问题,并且在 stackoverflow 中提供了经过验证的解决方案。请查看链接:Similar Solution Link
-
我看了看,不幸的是这告诉MainWindow它可以使用DLL,但是DLL仍然不知道MainWindow。我可以添加对 UserControl 的类似引用,以便能够指向 MainWindow,但这会使 UserControl 无法在其他项目中重用。
标签: c# wpf xaml binding user-controls