0

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

4

2 回答 2

2

通过<Binding Path=".">您传递 ComboBoxItem 拥有的对象,但<Binding RelativeSource="{RelativeSource Self}"/>您可以传递控件本身。

您还可以做的是传递整个 ComboBox 及其选定的索引/项目:

在你的转换器中,你可以像这样得到你的 ComboBoxItem:

ComboBoxItem cbi = (ComboBoxItem)(cb.ItemContainerGenerator.ContainerFromIndex(selectedindex));

或者

ComboBoxItem cbi = (ComboBoxItem)(cb.ItemContainerGenerator.ContainerFromItem(selecteditem));
于 2012-11-26T09:07:11.063 回答
1

您可以使用 FindAncestor 获取组合框的选定项:

<Binding Path="SelectedItem" RelativeSource="{RelativeSource Mode=FindAncestor, AncestorType=ComboBox}"/>

于 2012-11-26T09:30:13.273 回答