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