我正在尝试基于thisexample为我的情况设置树视图,但区别在于我的类并不嵌套在UserControl类中,而是在一个单独的名称空间中 - .Datamodel。我无法正常工作,要么我会发现:
- " typeInfo"的名称不存在在名称空间中" clr-namespace:semgndataupdater.datamodel"。SemgentDataupDater SemgentDataUpDaterDialog.xaml"
或者我在对话框中获取带有TypeInfo类型说明的列表。我在做什么错?
我当前的代码是(它给出构建错误):
xaml:
<Window x:Class="SegmentDataUpdater.GUI.SegmentDataUpdaterDialog"
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:SegmentDataUpdater.GUI"
xmlns:data="clr-namespace:SegmentDataUpdater.DataModel"
mc:Ignorable="d"
Title="Segment Data Update" Height="450" Width="400">
<Grid>
<TreeView Name="trvTypeInfos">
<TreeView.Resources>
<HierarchicalDataTemplate DataType="{x:Type data:TypeInfo}" ItemsSource="{Binding SegmentInfos}">
<StackPanel Orientation="Horizontal">
<TextBlock Text="{Binding Name}" />
<TextBlock Text=" [" Foreground="Blue" />
<TextBlock Text="{Binding SegmentInfos.Count}" Foreground="Blue" />
<TextBlock Text="]" Foreground="Blue" />
</StackPanel>
</HierarchicalDataTemplate>
<DataTemplate DataType="{x:Type data:SegmentInfo}">
<StackPanel Orientation="Horizontal">
<TextBlock Text="{Binding Name}" />
<TextBlock Text=" (" Foreground="Green" />
<TextBlock Text="{Binding HasData}" Foreground="Green" />
<TextBlock Text=" years)" Foreground="Green" />
</StackPanel>
</DataTemplate>
</TreeView.Resources>
</TreeView>
</Grid>
代码背后:
namespace SegmentDataUpdater.GUI
{
public partial class SegmentDataUpdaterDialog : Window
{
public List<TypeInfo> TypeInfoList { get; set; }
public SegmentDataUpdaterDialog()
{
InitializeComponent();
DataContext = this;
TypeInfoList = new List<TypeInfo>();
TypeInfo type1 = new TypeInfo() { Name = "Typ pierwszy"};
type1.SegmentInfos.Add(new SegmentInfo() { Name = "Segment 1", HasData = true });
type1.SegmentInfos.Add(new SegmentInfo() { Name = "Segment 2", HasData = false });
TypeInfoList.Add(type1);
TypeInfo type2 = new TypeInfo() { Name = "Typ drugi" };
type2.SegmentInfos.Add(new SegmentInfo() { Name = "Segment 1", HasData = true });
TypeInfoList.Add(type2);
trvTypeInfos.ItemsSource = TypeInfoList;
}
}
}
TypeInfo类:
namespace SegmentDataUpdater.DataModel
{
public class TypeInfo
{
public string Name { get; set; }
public ObservableCollection<SegmentInfo> SegmentInfos { get; set; }
public TypeInfo()
{
SegmentInfos = new ObservableCollection<SegmentInfo>();
}
}
}
在编辑中添加:
SemgentInfo类:
namespace SegmentDataUpdater.DataModel
{
public class SegmentInfo
{
public string Name { get; set; }
public bool HasData { get; set; }
public string JsonContents { get; set; }
}
}
它已解决。问题是配置设置。
该项目设置为x64,但是任何CPU的配置,将配置设置为X64之后。
在我第二篇有关另一个问题的文章中工作解决方案。