2009-04-21 66 views
0

基本上,我有一个颜色列表和列表框项目定义的DataTemplate:的列表框项目重新应用模板编程

<DataTemplate x:Key="colorItemDataTemplate"> 
    <Border x:Name="borderInner" BorderBrush="Black" BorderThickness="1" Background="{Binding Brush}" Width="11" Height="11" /> 
</DataTemplate> 

现在,当我加了一堆物品进入列表框,然后设置列表框。 ItemsSource属性到我的列表中,列表框被正确填充。

还有一个滑块及其适当的事件处理程序。在事件处理程序中,来自列表框的其中一个项目的Brush属性会更改。由于项目的外观取决于画笔属性,因此列表框应反映更改。

我可以重置ItemsSource属性,但所有项目都应用了它们的模板,并且在列表框中有200多个项目,这很慢。

那么,有没有什么办法刷新列表框中只有一个项目的模板?

Thanx

回答

1

我不确定我关注。如果您已将Background绑定到该物业,则更改物业应自动取消ListBoxItem的背景。如果您没有看到,请确保您使用的是DependencyProperty或实施INotifyPropertyChanged

+0

谢谢,这工作。我实现了INotifyPropertyChanged,它可以根据需要工作。 – 2009-04-21 13:29:02

0

您可以使用绑定转换器。在转换器类,你可以有一些像逻辑

(pseudo-code) 
if (ListBoxItem.IsSelected) 
    return SpecialColorFromSlider 
else 
    return NormalListBoxColor