gpt4 book ai didi

wpf - 如果 ONE 展开,则多个 Expander 必须折叠

转载 作者:行者123 更新时间:2023-12-04 01:21:58 24 4
gpt4 key购买 nike

有 4 个扩展器控件。当一个扩展器被扩展时,我怎样才能让所有其他扩展器折叠/关闭?

最佳答案

试试下面的代码:

XAML:

        <StackPanel Name="StackPanel1">
<StackPanel.Resources>
<local:ExpanderToBooleanConverter x:Key="ExpanderToBooleanConverter" />
</StackPanel.Resources>
<Expander Header="Expander 1"
IsExpanded="{Binding SelectedExpander, Mode=TwoWay, Converter={StaticResource ExpanderToBooleanConverter}, ConverterParameter=1}">
<TextBlock>Expander 1</TextBlock>
</Expander>
<Expander Header="Expander 2"
IsExpanded="{Binding SelectedExpander, Mode=TwoWay, Converter={StaticResource ExpanderToBooleanConverter}, ConverterParameter=2}">
<TextBlock>Expander 2</TextBlock>
</Expander>
<Expander Header="Expander 3"
IsExpanded="{Binding SelectedExpander, Mode=TwoWay, Converter={StaticResource ExpanderToBooleanConverter}, ConverterParameter=3}">
<TextBlock>Expander 3</TextBlock>
</Expander>
<Expander Header="Expander 4"
IsExpanded="{Binding SelectedExpander, Mode=TwoWay, Converter={StaticResource ExpanderToBooleanConverter}, ConverterParameter=4}">
<TextBlock>Expander 4</TextBlock>
</Expander>
</StackPanel>

转换器:
public class ExpanderToBooleanConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
return (value == parameter);
}

public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
if (System.Convert.ToBoolean(value)) return parameter;
return null;
}
}

View 模型:
public class ExpanderListViewModel
{
public Object SelectedExpander { get; set; }
}

初始化
StackPanel1.DataContext = new ExpanderListViewModel();

解释:

在 XAML 中,我们有 4 个扩展器。他们都继承了 ViewModel (类型为 ExpanderListViewModel )来自容器 StackPanel通过 DataContext .

它们都绑定(bind)到 ViewModel 上的单个属性类(class)。并使用 ConverterParameter 为自己定义了一个唯一索引在绑定(bind)中。该索引保存在 SelectedExpander扩展扩展器时的属性。使用该索引, Converter返回 true如果存储的索引与给定的索引和 false 匹配如果存储的索引不匹配。

Convert 中设置断点和 ConvertBack Converter的方法上课,你会看到发生了什么。

关于wpf - 如果 ONE 展开,则多个 Expander 必须折叠,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4449000/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com