我有一个WPF值转换器来转换items控件的项,该控件在加载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 observable集合上的通知属性collection,如下所示:
<Button Name="btnDraw" Command="{Binding StackupViewModel.ScrollCommand}" />
private void ScrollCommandHandler(object offset)
{
RaisePropertyChanged(() => this.Layers);
}有人能告诉我为什么当按钮被点击时转换器没有被触发吗?
发布于 2014-10-24 20:21:37
第一个绑定的上下文只是一个单独的Layer对象,而不是Layers父集合,因此MultiBinding在调用PropertyChanged方法时不会注册任何ScrollCommandHandler。
https://stackoverflow.com/questions/26545397
复制相似问题