4

我有一个DataGrid和两个StaticResource

我想将RowStyleDataGrid 绑定到两个静态资源之一。

RowStyle="{StaticResource {Binding Status, Converter={StaticResource MyConverter}}}"

MyConverter 返回 StaticResource 的 Key。

但我得到这个错误:

Attempted to read or write protected memory. This is often an indication that other memory is corrupt.

4

2 回答 2

2

静态资源键不是可以动态分配的值。键的名称需要在 Xaml 中内联。

正确的做法是这样的:-

RowStyle="{Binding Status, Converter={StaticResource MyConverter}}" 

根据“MyConverter”键存储的转换器返回一个Style对象。请注意,您可以ResourceDictionary向转换器添加类型属性,并将样式放在该字典中供转换器查找。

事实上,我已经在这里编写了一个能够做到这一点的转换器。

于 2011-01-10T12:43:09.750 回答
0
// Another version of writing such a converter

public abstract class BaseConverter : MarkupExtension
{
    protected IServiceProvider ServiceProvider { get; set; }

    public override object ProvideValue(IServiceProvider serviceProvider)
    {
        ServiceProvider = serviceProvider;
        return this;
    }    
}


public class StaticResourceConverter : BaseConverter, IValueConverter
{
    public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
    {
        return new StaticResourceExtension(value).ProvideValue(ServiceProvider);
    }

    public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
    {
        //TODO - implement this for a two-way binding
        throw new NotImplementedException(); 
    }
}
于 2014-02-13T21:09:11.177 回答