首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ValueConverter仅触发一次

ValueConverter仅触发一次
EN

Stack Overflow用户
提问于 2014-10-24 17:40:21
回答 1查看 179关注 0票数 0

我有一个WPF值转换器来转换items控件的项,该控件在加载xaml视图时触发。

我的问题是,当itemssource集合引发notify属性更改事件时,值转换器似乎没有触发。

下面是我的xaml:

代码语言:javascript
复制
<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>

这是我的转换器

代码语言:javascript
复制
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,如下所示:

代码语言:javascript
复制
<Button Name="btnDraw" Command="{Binding StackupViewModel.ScrollCommand}" />

private void ScrollCommandHandler(object offset)
{
    RaisePropertyChanged(() => this.Layers);

}

有人能告诉我为什么当按钮被点击时转换器没有被触发吗?

EN

回答 1

Stack Overflow用户

发布于 2014-10-24 20:21:37

第一个绑定的上下文只是一个单独的Layer对象,而不是Layers父集合,因此MultiBinding在调用PropertyChanged方法时不会注册任何ScrollCommandHandler

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26545397

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档