2016-12-07 6 views
0

Я пытаюсь обновить предыдущую встроенную форму, чтобы использовать стили, чтобы помочь очистить код и лучше подготовиться к переключению на 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 

ответ

0

В исследовании другой вопрос, я наткнулся this ответ и Actaully решить мою проблему. Вот рабочее решение

<CheckBox x:Name="ckbPerUnitType" /> 
.... 
IsReadOnly="{Binding Source={x:Reference ckbPerUnitType}, Path=DataContext.RentAdj.blnIsDifferentForType, Converter={StaticResource BoolInv}, ConverterParameter=True}" 
Смежные вопросы