[英]ValueConverter only firing once
我有一个WPF值转换器,用于转换加载xaml视图时触发的项控件的项。
我的问题是,当itemssource集合引发notify属性更改事件时,值转换器似乎未触发。
这是我的xaml:
<ItemsControl ItemsSource="{Binding StackupViewModel.Layers}">
<ItemsControl.ItemTemplate>
<DataTemplate>
<ContentPresenter>
<ContentPresenter.Content>
<MultiBinding Converter="{StaticResource LayerToRectangle}">
<Binding />
<Binding ElementName="rgv"/>
</MultiBinding>
</ContentPresenter.Content>
</ContentPresenter>
</DataTemplate>
</ItemsControl.ItemTemplate>
这是我的转换器
public object Convert(
object[] values,
Type targetType,
object parameter,
System.Globalization.CultureInfo culture)
{
var layer = values.First() as Layer;
var radGridView = values[1] as RadGridView;
var column = radGridView.Columns["Lamination"];
var row = radGridView.Items[0];
var cellToEdit = new GridViewCellInfo(row, column, radGridView);
radGridView.CurrentCellInfo = cellToEdit;
radGridView.Focus();
Rectangle rectangle = new Rectangle();
if (radGridView.CurrentCell != null)
{
Point p = radGridView.CurrentCell.TranslatePoint(new Point(0, 0), radGridView);
rectangle.Height = radGridView.RowHeight - 10;
rectangle.Width = column.ActualWidth;
rectangle.Fill = (SolidColorBrush)new BrushConverter().ConvertFrom(layer.ColorHex);
Canvas.SetTop(rectangle, p.Y + layer.LayerNumber);
Canvas.SetLeft(rectangle, p.X);
}
return rectangle;
}
我在xaml中添加了一个按钮,以触发在Layers可观察集合上的notifypropertychanged:
<Button Name="btnDraw" Command="{Binding StackupViewModel.ScrollCommand}" />
private void ScrollCommandHandler(object offset)
{
RaisePropertyChanged(() => this.Layers);
}
谁能告诉我为什么单击按钮后转换器不会被触发?
第一个绑定的上下文只是一个单独的Layer
对象,而不是Layers
父集合,因此,当您调用ScrollCommandHandler
方法时,MultiBinding将不会注册任何PropertyChanged
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.