暴露外部装配类

时间:2016-09-16 10:40:24

标签: c# .net wpf

我无法解决这个问题。

我使用外部DLL,其中包含自定义类型类。如果我使用ItemsSource将我的ie dataGrid绑定到ObservableCollection,并设置<DataGridTextColumn Header="Name" Binding="{Binding Name}" />,则会产生一个空单元格。如果我<DataGridTextColumn Header="Name" Binding="{Binding .}" />它会显示 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);
            }
        }
    }

因此,我必须遍历原始externalClass的对象并使用myExternalClass创建实例。它是这样的,但必须有一个正确的方法,对吧?如何在不编写&#34;包装器的情况下公开外部类&#34;上课吗?

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

谢谢!

修改

我甚至可以直接访问这些值:

        externalDataManager = new externalDataManager();
        _dataSets = new ObservableCollection<externalClass>(externalDataManager.EnumDataSets(false));
        Debug.Assert(false, _dataSets[0].Name);

Assert使用原始的externalClass显示正确的值。将Collection绑定到视图中的某个控件时,为什么会失败?

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>

数据网格中的行数和组合框中的元素数是正确的,它们只是空值。

0 个答案:

没有答案