C#里IValueConverter里的两个方法调用顺序讲解
我们都知道IValueConverter里有两个方法,那么何时调用ConvertBack这个方法是个关键问题 ,当然可以在代码中手动调用,但一般情况下是自动调用,比如在WPF应用程序里,那么现在回正题,什么时候调用ConvertBack这个方法,我用XAML来讲解,比如XAML中有一段代码是这样的:
<RadioButton Content="Dumb" HorizontalAlignment="Left" Margin="37,41,0,0" VerticalAlignment="Top" Name="dumbAIRadioButton" IsChecked="{Binding Path=ComputerSkill,Converter={StaticResource skillConverter},ConverterParameter=Dumb}"/>
<RadioButton Content="Good" HorizontalAlignment="Left" Margin="37,62,0,0" VerticalAlignment="Top" Name="goodAIRadioButton" IsChecked="{Binding Path=ComputerSkill,Converter={StaticResource skillConverter},ConverterParameter=Good}"/>
<RadioButton Content="Cheats" HorizontalAlignment="Left" Margin="37,83,0,0" VerticalAlignment="Top" Name="cheatingAIRadioButton" IsChecked="{Binding Path=ComputerSkill,Converter={StaticResource skillConverter},ConverterParameter=Cheats}"/>
说明一下ComputerSkill是个枚举值,那么怎么判定是否会调用ConvertBack这方法呢?看两个地方 一个是看IsChecked(任意属性)另一个看Path的ComputerSkill的数据类型(看Path后的数据类型),如果匹配则不会调用ConvertBack这个方法 ,何为匹配 比如IsChecked是布尔型的 如果这个时候ComputerSkill也是布尔型的 那就匹配了,否则将调用ConvertBack这个方法,但是调用了之后 最后还是会回到Convert这个方法执行转换,所以ConvertBack不能忽视,如果ConvertBack没有写内容代码,有时候程序会出错会有意想不到的情况发生,好了 就写到这里 你们自己做做实验就知道了 拜拜!