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