2016-12-07 5 views
0

スタイルを使用してコードを整理し、MVVMへの切り替えをよりよく準備するために、以前構築したフォームを更新しようとしています。チェックボックスがオンになるまで、列を読み取り専用にするロジックがあります。WPFスタイルでデータグリッド列を無効にする

チェックボックス自体にバインドしようとしましたが、チェックボックスが見つからないというバインディングエラーが表示されました。

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}" 

私には何が欠けているのか分かりません。ここで

がConverterは異なる問題を調査では、両方の

<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}" 
関連する問題