0

我有一个用户控件(自定义组合框),我将其包含在另一个用户控件中。我想根据包含我的组合框用户控件的主用户控件中的数据在该自定义组合框用户控件上设置样式。

这是我的代码

<MultiSelectComboBox:MultiUnitSelectControl x:Name="MultiUnitCombo" Grid.Row="0" Width="90" Grid.Column="0" ItemsSource="{Binding LstUnit}" Margin="0,10,0,2" FontWeight="Bold" HorizontalAlignment="Left">
    <MultiSelectComboBox:MultiUnitSelectControl.Style>
        <Style TargetType="{x:Type ComboBox}">
            <Style.Triggers>
                <DataTrigger Binding="{Binding Path=Items.Count,ElementName=UnitCombo}" Value="1">
                    <Setter Property="Visibility" Value="Collapsed"/>
                </DataTrigger>
            </Style.Triggers>
        </Style>
    </MultiSelectComboBox:MultiUnitSelectControl.Style>
</MultiSelectComboBox:MultiUnitSelectControl>

这是我自定义的用户控件。现在我想要的是当 Items Count 等于 1 时我想折叠它。 UnitCombo 是我的主 UserControl 中的一个组合框,基于它的 itemsCount 我想在 Included UserControl 上设置 Visibility。

但是,当我将此样式应用于主用户控件中的组合框时,它可以工作

<ComboBox.Style>
                                        <Style TargetType="{x:Type ComboBox}">
                                            <Style.Triggers>
                                                <DataTrigger
                                                        Binding="{Binding Path=Items.Count, ElementName=UnitCombo}"
                                                        Value="1">
                                                    <Setter Property="SelectedIndex" Value="0" />

                                                </DataTrigger>
                                            </Style.Triggers>
                                        </Style>
                                    </ComboBox.Style>

但是在 Included UserControl 上应用相同的样式不会显示任何内容。它会挂起整个视图并且什么也不显示,就好像控件是隐藏的一样。

我怎样才能做到这一点?

4

1 回答 1

0

我希望您UnitCombo通过将其设置为ItemsSource来填充您的ObservableCollection,然后您将需要绑定到ItemsSource.Count而不是 Items.Count

          <DataTrigger Binding="{Binding Path=ItemsSource.Count,ElementName=UnitCombo}" Value="1">
                <Setter Property="Visibility" Value="Collapsed"/>
            </DataTrigger>

它会起作用的。

于 2013-10-18T06:35:26.477 回答