包含的用户控件上的样式

时间:2013-10-18 06:16:02

标签: c# wpf user-controls combobox datatrigger

我有一个usercontrol(自定义的ComboBox),我将其包含在另一个usercontrol中。我想根据主用户控件中的数据在Customized ComboBox UserControl上设置一个样式,其中包括我的ComboBox Usercontrol。

这是我的代码

<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>

这是我的自定义用户控件。现在我想要的是当项目计数等于1时我想折叠它.CounterCombo是我的主UserControl中的组合框,基于其itemsCount我想在Included UserControl上设置可见性。

然而,当我将此Style应用于Main UserControl中的ComboBox时,它可以正常工作

<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上应用相同的样式并不会显示任何内容。它会挂起整个视图并且不会显示任何内容,就像控件是隐藏的一样。

我该怎么做?

1 个答案:

答案 0 :(得分:0)

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

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

它会起作用。