C# 检查是否有任何UserControl处于打开状态

C# 检查是否有任何UserControl处于打开状态,c#,wpf,combobox,user-controls,C#,Wpf,Combobox,User Controls,我创建了UserControl,它扩展了组合框的基本功能 <ComboBox x:Name="MultiSelectCombo" SnapsToDevicePixels="True" OverridesDefaultStyle="True" ScrollViewer.HorizontalScrollBarVisibility="Hidden" ScrollViewer.VerticalScrollBarVisibility="Auto"

我创建了
UserControl
,它扩展了
组合框的基本功能

<ComboBox
    x:Name="MultiSelectCombo"  
    SnapsToDevicePixels="True"
    OverridesDefaultStyle="True"
    ScrollViewer.HorizontalScrollBarVisibility="Hidden"
    ScrollViewer.VerticalScrollBarVisibility="Auto"
    ScrollViewer.CanContentScroll="True"
    IsSynchronizedWithCurrentItem="True"
    StaysOpenOnEdit="True"
    Background="#61596f"
>
...
</ComboBox>

其中,
ComboBoxToggleButton
是打开/关闭下拉列表的comboBox按钮

我将使用多重绑定

<Grid>
     <Grid.Visibility>
          <MultiBinding Mode="OneWay" Converter={StaticResource OpenToVisibilityConverter}>
              <Binding ElementName="CategoriesFilter" Path="[a Open property on your UserControl]" />
              <Binding ElementName="TypesFilter" Path="[a Open property on your UserControl]" />
              <Binding ElementName="BrandsFilter" Path="[a Open property on your UserControl]" />TypesFilter
          </MultiBinding>
     </Grid.Visibility>
</Grid>

类型过滤器
其中OpenToVisibilityConverter是一个IMMultiValueConverter,用于检查每个绑定控件的isopen属性并返回正确的可见性


似乎没有太多代码可供使用。

我添加了转换器
公共对象转换(对象[]值,类型targetType,对象参数,System.Globalization.CultureInfo culture){var collection=(值。选择(系统。转换。ToBoolean));var retValue=collection.Aggregate(false,(当前,项)=>项| |当前);返回retValue?“可见”:“折叠”}
。当前转换器工作正常,但网格始终可见。您必须返回可见性。可见或可见性。折叠,不是两个字符串。也没有帮助…hmmm现在没问题。我应该从
系统.Windows
命名空间开始使用enum
可见性
。谢谢
<Grid.Style>
            <Style TargetType="Grid">
                <Setter Property="Visibility" Value="Collapsed"/>
                <Style.Triggers>
                    <DataTrigger Binding="{Binding IsChecked, ElementName=ComboBoxToggleButton}" Value="True">
                        <Setter Property="Visibility" Value="Visible"/>
                    </DataTrigger>
                </Style.Triggers>
            </Style>
        </Grid.Style>
<Grid>
     <Grid.Visibility>
          <MultiBinding Mode="OneWay" Converter={StaticResource OpenToVisibilityConverter}>
              <Binding ElementName="CategoriesFilter" Path="[a Open property on your UserControl]" />
              <Binding ElementName="TypesFilter" Path="[a Open property on your UserControl]" />
              <Binding ElementName="BrandsFilter" Path="[a Open property on your UserControl]" />TypesFilter
          </MultiBinding>
     </Grid.Visibility>
</Grid>