Я пытаюсь обновить предыдущую встроенную форму, чтобы использовать стили, чтобы помочь очистить код и лучше подготовиться к переключению на MVVM. У нас есть логика, которая должна отмечать только чтение столбца, пока не будет установлен флажок.WPF Disable Datagrid Column со стилем
Я попытался привязать к флажку самостоятельно, но получил ошибку привязки, заявив, что не может найти этот флажок.
IsReadOnly="{Binding ElementName=ckbPerUnitType, Path=IsChecked, Converter={StaticResource BoolInv}, ConverterParameter=True}"
Я попытался привязать к родительскому пользовательскому контенту данных, к которому привязан флажок. Я получил сообщение об ошибке, что источник ссылки привязки не найден.
IsReadOnly="{Binding RelativeSource={RelativeSource FindAncestor,AncestorType=UserControl}, Path=DataContext.RentAdj.blnIsDifferentForType, Converter={StaticResource BoolInv}, ConverterParameter=True}"
Я не уверен, что мне не хватает.
Вот код конвертер, который конвертер используется как в
<ValueConversion(GetType(Boolean), GetType(Boolean))> _
Public Class BooleanInverseConverter
Implements IValueConverter
''' <summary>
''' Converter to Compare the Inverse of a Boolean
''' </summary>
''' <param name="value">Boolean you wish to compare</param>
''' <param name="targetType"></param>
''' <param name="parameter">Boolean to determine if the value needs to be inverted</param>
''' <param name="culture"></param>
''' <returns></returns>
''' <remarks></remarks>
Public Function Convert(ByVal value As Object, ByVal targetType As System.Type, ByVal parameter As Object, ByVal culture As System.Globalization.CultureInfo) As Object Implements System.Windows.Data.IValueConverter.Convert
Dim v As Boolean = DirectCast(value, Boolean)
If CBool(parameter) = True Then v = Not v
Return v
End Function
Public Function ConvertBack(value As Object, targetType As Type, parameter As Object, culture As Globalization.CultureInfo) As Object Implements IValueConverter.ConvertBack
Throw New Exception("Not Implemented")
End Function
End Class