>"-6ren"> >"-我最近开始使用 WPF,并因此接触到了 XAML。 我想知道是否可以创建一个 Dictionary>在 XAML 中。 我知道你可以创建一个 Dictionary但是,我似乎无法将 Dictionar-6ren">
gpt4 book ai didi

c# - 在 XAML 中创建一个 "Dictionary>"

转载 作者:太空宇宙 更新时间:2023-11-03 13:23:11 24 4
gpt4 key购买 nike

我最近开始使用 WPF,并因此接触到了 XAML。

我想知道是否可以创建一个 Dictionary< string, Dictionary< string, string>>在 XAML 中。

我知道你可以创建一个 Dictionary< TKey, TValue>但是,我似乎无法将 Dictionary 放置为 Dictionary 的 TValue。

谁能帮帮我?

这是我的字典类。

public class DictionaryForXAML : MarkupExtension, IDictionary
{
public Type KeyType { get; set; }
public Type ValueType { get; set; }

private IDictionary _dictionary;
private IDictionary Dictionary
{
get
{
if (_dictionary == null)
{
var type = typeof(Dictionary<,>);
var dictionaryType = type.MakeGenericType(KeyType, ValueType);
_dictionary = (IDictionary)Activator.CreateInstance(dictionaryType);
}
return _dictionary;
}
}

public override object ProvideValue(IServiceProvider serviceProvider)
{
return Dictionary;
}

public void Add(object key, object value)
{
if (!KeyType.IsAssignableFrom(key.GetType()))
key = TypeDescriptor.GetConverter(KeyType).ConvertFrom(key);

Dictionary.Add(key, value);
}

//Additional inherited methods not posted
}
}

还有我的 XAML 窗口资源:

<Window.Resources>
<Class:DictionaryForXAML x:Key="ValueDic" KeyType="System:String" ValueType="System:String"/>
<Class:DictionaryForXAML x:Key="RootDic" KeyType="System:String" ValueType="???"/>
</Window.Resources>

最佳答案

不确定我是否正确理解您的问题,但您是否尝试过类似的方法?

    <Class:DictionaryForXAML x:Key="RootDic" KeyType="system:String">
<Class:DictionaryForXAML.ValueType>
<Class:DictionaryForXAML KeyType="system:String" ValueType="system:String"/>
</Class:DictionaryForXAML.ValueType>
</Class:DictionaryForXAML>


编辑:

我试过别的东西,这个适合你吗?

XAML

<wpfApplication3:RootDictionary x:Key="RootDic">
<wpfApplication3:SubDictionary x:Key="RootNodeA">
<system:String x:Key="SubNode1">Test info1</system:String>
<system:String x:Key="SubNode11">Test info1.1</system:String>
</wpfApplication3:SubDictionary>
<wpfApplication3:SubDictionary x:Key="RootNodeB">
<system:String x:Key="SubNode2">Test info2</system:String>
</wpfApplication3:SubDictionary>
</wpfApplication3:RootDictionary>

代码

using System.Collections.Generic;

namespace WpfApplication3
{
public class RootDictionary : Dictionary<string, IDictionary<string, string>>
{

}

public class SubDictionary : Dictionary<string, string>
{

}
}

关于c# - 在 XAML 中创建一个 "Dictionary<string, Dictionary<string, string>>",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23422925/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com