绑定值从resource.resx到DataGridTemplateColumn的Header

时间:2011-10-27 08:47:58

标签: xaml data-binding silverlight-4.0 resources

我收到错误:

Cannot find a Resource with the Name/Key ResourceString [Line: 94 Position: 104]

在我的xaml中:

<data:DataGridTemplateColumn x:Name="PriorityColumn" CanUserSort="True" Header="{Binding columnHeader_PriorityColumn, Source={StaticResource ResourceString}}">

但是我无法将资源从资源绑定到texblock

经过一番调查后我发现这是因为我只能将Resource.resx用于以下列出的控件:

http://msdn.microsoft.com/en-us/library/dd882554(v=vs.95).aspx

所以,如果我有权利,还有其他方法可以绑定DataGridTemplateColumn的值吗?

1 个答案:

答案 0 :(得分:0)

如果我理解正确,您需要绑定资源文件中的值。如果这是问题,那么你应该用INotifyPropertyChanged包装资源。尝试做这样的事情:

public class ResourceWrapper : INotifyPropertyChanged
{
        private static readonly Resource resourceHelper = new Resource();

        public Resource ResourceHelper
        {
            get { return resourceHelper; }
            set { NotifyChange("ResourceHelper"); }
        }

        public event PropertyChangedEventHandler PropertyChanged;

        private void NotifyChange(String name)
        {
            if (PropertyChanged != null) PropertyChanged(this, new PropertyChangedEventArgs(name));
        }
    }

在xaml中执行以下操作:

...
    <UserControl.Resources>
        <helper:ResourceWrapper x:Name="ResourceString" />
    </UserControl.Resources>
...

最后

<data:DataGridTemplateColumn x:Name="PriorityColumn" CanUserSort="True" Header="{Binding ResourceHelper.NeededString, Source={StaticResource ResourceString}}">

希望它能帮到你。