我正在尝试为comboxitem创建一个样式。我想将当前的组合框架传递给转换器。风格就像
<Style x:Key="MyVisibilityStyle" TargetType="{x:Type ComboBoxItem}">
<Setter Property="Visibility">
<Setter.Value>
<MultiBinding Converter="{StaticResource VisibiltyMultiValueConverter}">
<Binding Path="."/>
<Binding Path="SelectedItem"
ElementName="ABCComboBox"/>
</MultiBinding>
</Setter.Value>
</Setter>
</Style>
问题是“。”传递MainWindow的对象而不是组合框。
答案 0 :(得分:2)
通过<Binding Path=".">
传递ComboBoxItem所持有的对象,但是<Binding RelativeSource="{RelativeSource Self}"/>
可以传递控件本身。
您还可以做的是传递整个ComboBox及其选定的索引/项目:
在你的转换器中你可以得到你的ComboBoxItem:
ComboBoxItem cbi = (ComboBoxItem)(cb.ItemContainerGenerator.ContainerFromIndex(selectedindex));
或
ComboBoxItem cbi = (ComboBoxItem)(cb.ItemContainerGenerator.ContainerFromItem(selecteditem));
答案 1 :(得分:1)
您可以使用FindAncestor获取组合框的选定项目:
<Binding Path="SelectedItem" RelativeSource="{RelativeSource Mode=FindAncestor, AncestorType=ComboBox}"/>