1

在我的 ListBox 中,我想将每个项目的 IsSelected 属性绑定到我的 ViewModel,并且成功地做到了。然后我想让选定的项目在没有键盘焦点时更加可见,这个答案告诉我该怎么做。任何一个功能都可以单独工作,但将它们结合起来会导致启动时出现以下异常:

XamlParseException:无法在“Setter”类型的“Value”属性上设置“Binding”。只能在 DependencyObject 的 DependencyProperty 上设置“绑定”。

这是我的 XAML:

<ListBox x:Name="objectList" ItemsSource="{Binding FilteredList}" SelectionMode="Extended">
    <ListBox.ItemContainerStyle>
        <Style TargetType="{x:Type ListBoxItem}">
            <Style.Resources>
                <!--Make unfocused selected items more visible-->
                <SolidColorBrush x:Key="{x:Static SystemColors.ControlBrushKey}" Color="LightBlue" Opacity=".5"/>
            </Style.Resources>
            <!-- Support multiselect-->
            <Setter Property="IsSelected" Value="{Binding IsSelected}"/>
        </Style>
    </ListBox.ItemContainerStyle>
</ListBox>
4

2 回答 2

1

无法重现这一点,这将是我在 Silverlight 中但不是 WPF 中预期的错误。在 SL 中,您不能使用 Setter 创建绑定。

于 2011-07-04T22:19:37.567 回答
0

我尝试在一个新的、干净的、空的项目中重现它,但仍然出现错误……如果 .NET Framework 版本是 3.5。但是,如果我将 .NET Framework 版本更改为 4,错误就会消失。这可能是 .NET 3.5 中的一个错误。

于 2011-11-22T20:09:30.677 回答