UWP:转换和转换回值转换器是如何工作的?
我有一个扩展器控件,一次只能打开一个扩展器。如果用户单击一个扩展器,另一个扩展器将崩溃。代码如下: 我有一个Converter.cs文件,其中包含以下代码UWP:转换和转换回值转换器是如何工作的?,uwp,uwp-xaml,Uwp,Uwp Xaml,我有一个扩展器控件,一次只能打开一个扩展器。如果用户单击一个扩展器,另一个扩展器将崩溃。代码如下: 我有一个Converter.cs文件,其中包含以下代码 public class OppositeConverter : IValueConverter { public object Convert(object value, Type targetType, object parameter, string language) { return !(bool)value; } pu
public class OppositeConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, string language)
{
return !(bool)value;
}
public object ConvertBack(object value, Type targetType, object parameter, string language)
{
return !(bool)value;
}
}
我有一个MainPageViewModel.cs文件,其中包含以下代码:
public class MainPageViewModel
{
public MainPageViewModel()
{
}
private bool _isExpend;
public bool IsExpend
{
get
{
return _isExpend;
}
set
{
_isExpend = value;
RaisePropertyChanged(nameof(isExpend));
}
}
}
我有一个MainPage.xaml文件
<Page.DataContext>
<local:MainPageViewModel x:Name="ViewModel" />
</Page.DataContext>
<Page.Resources>
<local:OppositeConverter x:Key="OppositeConverter" />
</Page.Resources>
<StackPanel>
<controls:Expander
x:Name="Expander1"
Content = "Expander 1 content"
IsExpanded="{x:Bind IsExpend, Converter={StaticResource OppositConverter},Mode=TwoWay}">
</controls:Expander>
<controls:Expander
x:Name="Expander2"
Content = "Expander 2 content"
IsExpanded="{x:Bind IsExpend, Mode=TwoWay}">
</controls:Expander>
</StackPanel>
我可以得到帮助了解转换器如何在这里工作吗?何时调用convert,何时调用convertback?为什么只有第一个扩展器使用转换器而不是第二个?如果您能帮助我理解这段代码的流程,我将不胜感激
何时调用convert,何时调用convertback
OppositeConverter
类允许您通过继承IValueConverter
在源和目标之间转换数据格式。单击控件以更改状态时,我们使用
OppositeConverter
将另一个控件的状态值设置为相反的值
单击第二个控件时,将调用Convert
方法。工作流程如下所示:
\u isExpend
值将被更改,并且将调用RaisePropertyChanged
方法来通知值已更改Convert
方法获得第二个控件的\u isExpend
的相反值,这使得第一个控件的折叠或扩展状态与第二个控件相反ConvertBack
方法。工作流程如下所示:
ConvertBack
方法以获取相反的值\u isExpend
RaisePropertyChanged
方法来通知值已更改,并且第二个控件将获得与第一个控件的\isExpend
值相反的\isExpend
值