如何在转换器中传递当前的Combobox项目

时间:2012-11-26 08:46:40

标签: wpf xaml

我正在尝试为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的对象而不是组合框。

2 个答案:

答案 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}"/>