WPF TreeView DataTemplate与非巢类问题绑定



我正在尝试基于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之后。

在我第二篇有关另一个问题的文章中工作解决方案。

相关内容

  • 没有找到相关文章

最新更新