Wpf 如何在muiltbinding中绑定listboxitem内容?

Wpf 如何在muiltbinding中绑定listboxitem内容?,wpf,Wpf,我正在使用wpf做我的第一个项目。我真的需要你的帮助和建议。提前谢谢 我正在构建一个屏幕,它有两个列表框a和B。列表框a绑定到从数据库加载的项目。listbox B绑定到静态列表。当用户在列表框A中选择一个项目时,关联的项目将在列表框B中突出显示。我是通过在listboxtitem中使用多重绑定来实现的。我想传递选定的数据对象和listboxitem内容。Convert()将获取这两个变量并进行检查。如果匹配,则该项的IsSelected属性将返回true并高亮显示。但似乎无法将项内容(静态字符

我正在使用wpf做我的第一个项目。我真的需要你的帮助和建议。提前谢谢

我正在构建一个屏幕,它有两个列表框a和B。列表框a绑定到从数据库加载的项目。listbox B绑定到静态列表。当用户在列表框A中选择一个项目时,关联的项目将在列表框B中突出显示。我是通过在listboxtitem中使用多重绑定来实现的。我想传递选定的数据对象和listboxitem内容。Convert()将获取这两个变量并进行检查。如果匹配,则该项的IsSelected属性将返回true并高亮显示。但似乎无法将项内容(静态字符串)传递给converter()。我该怎么办

请参阅我的xaml代码:

             <ListBox Name="AbsenseCode" ItemsSource="{Binding absenseCodeItems}" Grid.Row="1" Grid.Column="1" Grid.RowSpan="5" Margin="20,0,20,5" >
                    <ListBox.ItemContainerStyle>
                        <Style TargetType="{x:Type ListBoxItem}">
                            <Setter Property="IsSelected">
                                <Setter.Value>
                                    <MultiBinding Converter="{StaticResource IsItemSelected}">
                                        <Binding ElementName="FilterListbox" Path="SelectedItem"/>
                                        <Binding Path="Content"/>
                                    </MultiBinding>
                                </Setter.Value>
                            </Setter>
                        </Style>
                    </ListBox.ItemContainerStyle>
              </ListBox>


调试时,第二个bing变量content of item是“{dependencProperty.UnsetValue}”。

这已经有几个月了,但我遇到了类似的情况

首先,构建一个IMultivalueConverter,它将比较两个值并将结果返回到字符串。“真”或“假”或“是”或“否”

然后在XAML中,定义可由转换器返回触发的样式。在这种情况下,ListBoxB有一个椭圆,如果值匹配,则填充为绿色,如果值不匹配,则填充为红色:

 <Window.Resources>
    <myNamespace:IsEqualConverter x:Key="IsEqualConverter" />
</Window.Resources>


<ListBox Name="ListBoxA" ItemsSource="{Binding}">

</ListBox>

<ListBox Name="ListBoxB" ItemsSource="{Binding}">
    <ListBox.ItemTemplate>
        <StackPanel>
            <StackPanel.Resources>
                <!-- style triggered by converter result -->
                <Style TargetType="Ellipse" x:Key="EllipseStyle">
                    <Setter Property="Fill" Value="#E5E5E5" />
                    <Style.Triggers>
                        <DataTrigger Binding="{Binding ElementName=result,Path=Text}" Value="true">
                            <Setter Property="Fill" Value="Green" />
                        </DataTrigger>
                        <DataTrigger Binding="{Binding ElementName=result,Path=Text}" Value="false">
                            <Setter Property="Fill" Value="Red" />
                        </DataTrigger>
                    </Style.Triggers>
                </Style>
            </StackPanel.Resources>
            <Ellipse Height="50" Width="50" Style="{StaticResoure EllipseStyle}" />
            <TextBlock x:Name="value0" Text="{Binding ElementName=ListBoxA,Path=SelectedItem.(Whatever),Mode=OneWay}" />
            <TextBlock x:Name="value1" Text="{Data Binding you want to compare to}" VerticalAlignment="Center" HorizontalAlignment="Left" />
            <TextBlock x:Name="result">
                <TextBlock.Text>
                    <MultiBinding Converter="{StaticResource IsEqualConverter}">
                        <Binding ElementName="value0" Path="Text" />
                        <Binding ElementName="value1" Path="Text" />
                    </MultiBinding>
                </TextBlock.Text>
            </TextBlock>
        </StackPanel>
    </ListBox.ItemTemplate>
</ListBox>


您的
列表框项目的
内容是什么?在我看来,它似乎没有任何内容。我们讨论的是
ListBoxItem
的实际
Content
属性,而不是
ViewModel
中的属性,它是一个字符串,如“LB”,“AF”。。。即使我使用“ListBoxItem.Content”,结果也是一样的。而不是在转换器上执行然后再执行ListBoxItem.Value或Text…不知道确切情况…但它应该可以工作:)替换为,运行,获取错误:PresentationFramework.dll中发生类型为“System.InvalidOperationException”的未处理异常。其他信息:双向绑定需要路径或XPath。噢,它只需添加模式=单向即可工作。谢谢