我有一个扩展器控件,一次只能打开一个扩展器。如果用户点击一个展开器,另一个展开器就会折叠。代码如下:
我有一个带有以下代码的 Converter.cs 文件
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?为什么只有第一个扩展器使用转换器而不是第二个?我非常感谢帮助理解此代码的流程。