gpt4 book ai didi

wpf - Silverlight 3 中 ItemContainerStyle 中的数据绑定(bind)问题

转载 作者:行者123 更新时间:2023-12-01 12:01:15 25 4
gpt4 key购买 nike

我无法在 ItemContainerStyle 中使用数据绑定(bind)对于 ListBox在 Silverlight 3 中。它在 WPF 中运行良好。这是人为的例子来证明我的问题。我真正想要的是绑定(bind)到 IsSelected属性,但我认为这个例子更容易理解。

我有一个 ListBox绑定(bind)到 ObservableCollection<Item>Item对象:

public class Item {
public String Name { get; }
public Brush Color { get; }
}

这是相关的 Silverlight XAML:

<ListBox x:Name="listBox" ItemsSource="{Binding .}">
<ListBox.ItemContainerStyle>
<Style TargetType="ListBoxItem">
<Setter Property="Background" Value="{Binding Color}"/>
</Style>
</ListBox.ItemContainerStyle>
<ListBox.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding Name}"/>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>

如果 TargetType="ListBoxItem",则可以在 WPF 中使用相同的 XAML替换为 TargetType="{x:Type ListBoxItem}" .

WPF 应用程序将显示列表框中的项目并根据Color 设置它们的背景颜色。 Item 的属性(property)目的。但是,Silverlight 应用程序失败并显示 XamlParseException有文字 AG_E_RUNTIME_MANAGED_UNKNOWN_ERROR .作为一个顽固的人,我什至尝试删除失败的 XAML 并创建我自己的样式,而不是像这样:

  Binding binding = new Binding("Color");
Setter setter = new Setter(ListBoxItem.BackgroundProperty, binding);
Style style = new Style(typeof(ListBoxItem));
style.Setters.Add(setter);
listBox.ItemContainerStyle = style;

如果我尝试运行它,我会得到一个 ArgumentException在我的 Silverlight 控件初始化之后。

我做错了什么?如何绑定(bind) ItemContainerStyle 上的属性到项目的属性?

最佳答案

AFAIK Silverlight(甚至 3)不支持样式 setter 的绑定(bind)。您必须执行一些自定义逻辑来在加载每个项目时更改背景颜色——可能是通过在可视化树中获取其父项(即容器)并将其设置在那里。

关于wpf - Silverlight 3 中 ItemContainerStyle 中的数据绑定(bind)问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1176635/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com