Wpf 如何在muiltbinding中绑定listboxitem内容?
我正在使用wpf做我的第一个项目。我真的需要你的帮助和建议。提前谢谢 我正在构建一个屏幕,它有两个列表框a和B。列表框a绑定到从数据库加载的项目。listbox B绑定到静态列表。当用户在列表框A中选择一个项目时,关联的项目将在列表框B中突出显示。我是通过在listboxtitem中使用多重绑定来实现的。我想传递选定的数据对象和listboxitem内容。Convert()将获取这两个变量并进行检查。如果匹配,则该项的IsSelected属性将返回true并高亮显示。但似乎无法将项内容(静态字符串)传递给converter()。我该怎么办 请参阅我的xaml代码:Wpf 如何在muiltbinding中绑定listboxitem内容?,wpf,Wpf,我正在使用wpf做我的第一个项目。我真的需要你的帮助和建议。提前谢谢 我正在构建一个屏幕,它有两个列表框a和B。列表框a绑定到从数据库加载的项目。listbox B绑定到静态列表。当用户在列表框A中选择一个项目时,关联的项目将在列表框B中突出显示。我是通过在listboxtitem中使用多重绑定来实现的。我想传递选定的数据对象和listboxitem内容。Convert()将获取这两个变量并进行检查。如果匹配,则该项的IsSelected属性将返回true并高亮显示。但似乎无法将项内容(静态字符
<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。噢,它只需添加模式=单向即可工作。谢谢