Кажется, что не возможно связать свойство видимости DataGridTemplateColumn в Silverlight 4 все еще. Я сделал некоторый поиск с помощью Google и там, кажется, несколько сообщений, предлагающих это, относился к тому, что это не был DependencyObject и как это изменится в SL4, но это, кажется, не имеет место.
Для работы вокруг этого я делаю это в коде позади загруженного события datagrid, но мне любопытно относительно почему дело обстоит так?
Вот сообщение об ошибке, которое я получаю (с преобразователем, который возвращает значение Видимости):
{System.ArgumentException: Object of type 'System.Windows.Data.Binding' cannot be converted to type 'System.Windows.Visibility'.
at System.RuntimeType.TryChangeType(Object value, Binder binder, CultureInfo culture, Boolean needsSpecialCast)
at System.RuntimeType.CheckValue(Object value, Binder binder, CultureInfo culture, BindingFlags invokeAttr)
at System.Reflection.MethodBase.CheckArguments(Object[] parameters, Binder binder, BindingFlags invokeAttr, CultureInfo culture, Signature sig)
at System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture, Boolean skipVisibilityChecks)
at System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture)
at System.Reflection.RuntimePropertyInfo.SetValue(Object obj, Object value, BindingFlags invokeAttr, Binder binder, Object[] index, CultureInfo culture)
at System.Reflection.RuntimePropertyInfo.SetValue(Object obj, Object value, Object[] index)
at MS.Internal.XamlMemberInfo.SetValue(Object target, Object value)
at MS.Internal.XamlManagedRuntimeRPInvokes.SetValue(XamlTypeToken inType, XamlQualifiedObject& inObj, XamlPropertyToken inProperty, XamlQualifiedObject& inValue)}
Хотя DataGridTemplateColumn
действительно происходит от DependencyObject
, он не определяет DependencyProperty
для своего свойства Visibility. Фактически, он не определяет никаких свойств зависимости, поэтому вы не можете ничего связать с ним.