繁体   English   中英

ValueConverter仅触发一次

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM