我已经看到了一些类似的问题,但是没有一个问题对我来说足够愚蠢。我已经在C#中编码了大约两个星期并使用WPF大约两天。
我有一个班级
namespace STUFF
{
public static class Globals
{
public static string[] Things= new string[]
{
"First Thing"
};
}
}
和一个窗口
<Window
x:Class="STUFF.Window1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:sys="clr-namespace:System;assembly=mscorlib"
xmlns:local="clr-namespace:STUFF"
Title="STUFF"
Height="600"
Width="600">
<Window.Resources>
<local:Globals x:Key="globals"/>
</Window.Resources>
<Grid>
<Label Content="{Binding globals, Path=Things[0]}"/>
</Grid>
从XAML中将数据从代码绑定到XAML的最简单最简单的方法是什么?
这个编译并且运行正常,但标签是空白的,原因很明显,我确定,这可以逃避我。
答案 0 :(得分:1)
有几个问题。
您只能绑定到属性,而不能绑定到字段。将事物定义更改为
private readonly static string[] _things = new string[] { "First Thing" };
public static string[] Things { get { return _things; } }
绑定应将global列为源。将绑定更改为此
<Label Content="{Binding Path=Things[0], Source={StaticResource globals}}"/>
答案 1 :(得分:1)
由于您使用的是static
class
,因此您必须在x:Static
中将您的来源提及为xaml
。
将您的字段更改为属性
private string[] _Things;
public string[] Things
{
get
{
if (_Things == null)
{
_Things = new string[] { "First Thing", "Second Thing" };
}
return _Things;
}
}
由于Globals
是一个静态类,您必须使用x:Static
<Label Content="{Binding [0], Source={x:Static local:Globals.Things}}"/>