基本上,我有一个颜色列表和listbox项目的已定义datatemplate:
<DataTemplate x:Key="colorItemDataTemplate">
<Border x:Name="borderInner" BorderBrush="Black" BorderThickness="1" Background="{Binding Brush}" Width="11" Height="11" />
</DataTemplate>
现在,当我将一堆项目添加到列表框中,然后将ListBox.ItemsSource属性设置为我的列表时,列表框已正确填充。
还有一个带有相应事件处理程序的滑块。在事件处理程序中,列表框中某个项的Brush属性已更改。由于项目的外观取决于Brush属性,因此列表框应反映更改。
我可以重置ItemsSource属性,但是然后所有项目都应用了模板,并且列表框中有超过200个项目,这非常慢。
那么,有没有办法只从列表框中刷新一个项目的模板?
感谢名单
答案 0 :(得分:1)
我不确定我会效仿。如果您已将Background
绑定到属性,则更改属性应自动更新ListBoxItem
的背景。如果您没有看到,请确保您使用DependencyProperty
或实施INotifyPropertyChanged
。
答案 1 :(得分:0)
您可以使用绑定转换器。在转换器类中,您可以使用某些逻辑,如
(pseudo-code)
if (ListBoxItem.IsSelected)
return SpecialColorFromSlider
else
return NormalListBoxColor