C# 公开外部程序集类

C# 公开外部程序集类,c#,.net,wpf,C#,.net,Wpf,我就是想不起这个问题 我正在使用一个外部DLL,其中包括一个自定义类型类。如果我使用ItemsSource将我的I.e.数据网格绑定到ObservableCollection,并设置,它将导致一个空单元格。如果我执行,它将显示NameSpace.externalClass类型 我在声明myExternalClass时使用了它,如下所示: public class myExternalClass { public string Name { get; private set; }

我就是想不起这个问题

我正在使用一个外部DLL,其中包括一个自定义类型类。如果我使用ItemsSource将我的I.e.数据网格绑定到ObservableCollection,并设置
,它将导致一个空单元格。如果我执行
,它将显示NameSpace.externalClass类型

我在声明myExternalClass时使用了它,如下所示:

public class myExternalClass
{
    public string Name { get; private set; }
    public string Comment { get; private set; }

    public myExternalClass(externalClass ec)
    {
        Name = ec.Name;
        Comment = ec.Comment;
    }
}
我的财产是这样的:

    private ObservableCollection<myExternalClass> _dataSets;

    public ObservableCollection<myExternalClass> DataSets
    {
        get { return _dataSets; }
        set
        {
            if (_dataSets!= value)
            {
                _dataSets= value;
                NotifyOfPropertyChange(() => DataSets);
            }
        }
    }
private observedcollection\u数据集;
公共可观测收集数据集
{
获取{返回_数据集;}
设置
{
如果(_数据集!=值)
{
_数据集=值;
通知属性更改(()=>数据集);
}
}
}
因此,我必须迭代原始externalClass的对象,并用它们创建myExternalClass的实例。它是这样工作的,但是必须有一个正确的方法来做,对吗?如何公开外部类而不在其周围编写“包装器”类

我也是第一次在这个wpf程序中实现MVVM模式(caliburn.micro)。它的学习曲线有点陡峭;(

谢谢

编辑:

<UserControl x:Class="FirstMVVM.Views.ShellView"
             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:cal="http://www.caliburnproject.org"
             xmlns:i="clr-namespace:System.Windows.Interactivity;assembly=System.Windows.Interactivity"
             xmlns:local="clr-namespace:FirstMVVM.Views"
             mc:Ignorable="d" 
             d:DesignHeight="800" d:DesignWidth="525">
    <StackPanel Orientation="Vertical">
        <DataGrid ItemsSource="{Binding DataSets, Mode=TwoWay}" AutoGenerateColumns="False" MinWidth="340" Margin="23,37,12,95" IsReadOnly="True">
            <DataGrid.Columns>
                <DataGridTextColumn Header="Name" Binding="{Binding Name}" />
                <DataGridTextColumn Header="Comment" Binding="{Binding Comment}" />
            </DataGrid.Columns>
        </DataGrid>

        <ComboBox x:Name="DataSets" DisplayMemberPath="Name"/>
    </StackPanel>
</UserControl>
我甚至可以像这样直接访问这些值:

        externalDataManager = new externalDataManager();
        _dataSets = new ObservableCollection<externalClass>(externalDataManager.EnumDataSets(false));
        Debug.Assert(false, _dataSets[0].Name);
externalDataManager=newexternaldatamanager();
_数据集=新的ObservableCollection(externalDataManager.EnumDataSets(false));
Assert(false,_数据集[0].Name);
断言使用原始externalClass向我显示了正确的值。为什么将集合绑定到视图中的某个控件时失败

Edit2:

<UserControl x:Class="FirstMVVM.Views.ShellView"
             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:cal="http://www.caliburnproject.org"
             xmlns:i="clr-namespace:System.Windows.Interactivity;assembly=System.Windows.Interactivity"
             xmlns:local="clr-namespace:FirstMVVM.Views"
             mc:Ignorable="d" 
             d:DesignHeight="800" d:DesignWidth="525">
    <StackPanel Orientation="Vertical">
        <DataGrid ItemsSource="{Binding DataSets, Mode=TwoWay}" AutoGenerateColumns="False" MinWidth="340" Margin="23,37,12,95" IsReadOnly="True">
            <DataGrid.Columns>
                <DataGridTextColumn Header="Name" Binding="{Binding Name}" />
                <DataGridTextColumn Header="Comment" Binding="{Binding Comment}" />
            </DataGrid.Columns>
        </DataGrid>

        <ComboBox x:Name="DataSets" DisplayMemberPath="Name"/>
    </StackPanel>
</UserControl>


datagrid中的行数和combobox中的元素数是正确的,它们只是空值。

属性名称有值吗?是的,它有值。您没有在遇到困难的地方共享xaml。抱歉,我刚刚添加了xaml。属性名称有值吗?是的,它有值。您没有在遇到困难的地方共享xaml遇到困难。对不起,我刚刚添加了xaml。