我有这个XAML代码:
<Window.Resources>
<x:Array x:Name="arrayXAML" x:Key="WordList" Type="sys:String">
<sys:String>Abraham</sys:String>
<sys:String>Xylophonic</sys:String>
<sys:String>Yistlelotusmoustahoppenfie</sys:String>
<sys:String>Zoraxboraxjajaja</sys:String>
</x:Array>
</Window.Resources>
我知道我可以通过这两行c#访问这个数组:
Object res1 = this.Resources["WordList"];
wordList = this.FindResource("WordList") as string[];
但是,如果我想以编程方式向x:Array添加新字符串呢?
我尝试过:arrayXAML.Items.Add("hello");
但是当我使用如上所示的“FindRescource”时它似乎不起作用。有没有办法向这个数组添加项目?
在XAML中,x:Array
用ArrayExtension
类表示。
请参阅x:Array
上的MSDN:
在.NET Framework XAML Services实现中,此标记扩展的处理由ArrayExtension类定义。
重要的是要明白,你所拥有/来自你的ResourceDictionary
的不是ArrayExtension
而是string[]
。
因此arrayXAML
上的运行时更改你不会在ResourceDictionary
中看到。
你不能将新元素添加到string[]
,请参阅link,但你可以在ResourceDictionary
中为关键WordList
设置新值:
var sarr = this.Resources["WordList"] as string[];
var newSarr = new string[sarr.Length+1];
for (int i = 0; i < sarr.Length; i++)
{
newSarr[i] = sarr[i];
}
newSarr[newSarr.Length-1] = "New string from code behind";
this.Resources["WordList"] = newSarr;
备注:由于您正在修改资源,何时使用qazxsw poi:
DynamicResource