【问题标题】:How to MultiBinding too GeometryGroup如何对 GeometryGroup 进行多重绑定
【发布时间】:2013-02-20 08:47:28
【问题描述】:

我有一个使用 Path.Data 的 MultiBinding(这里的路径是 System.Windows.Shapes.Path)。 Converter 返回类型为System.Windows.Media.PathGeometry

<Path.Data>
  <MultiBinding Converter="{StaticResource ResourceKey=ToPathGeometryMultiConverter}">
    <Binding Path="A"/>
    <Binding Path="B"/>
    <Binding Path="C"/>
  </MultiBinding>-->
</Path.Data>

现在我想稍微改变结构并在GeometryGroup 中添加几个几何图形。我不知道如何在此处添加MultiBinding 的语法。

<Path.Data>                    
  <GeometryGroup>       
    <PathGeometry> 
     <!-- HOW CAN I MULTIBIND HERE --> 
    </PathGeometry>
  </GeometryGrounp>
<Path.Data>

无论我尝试什么,我总是遇到编译错误。

【问题讨论】:

    标签: c# wpf xaml multibinding


    【解决方案1】:

    您可以绑定 PathGeometry.Figures 属性并拥有一个返回 PathFigureCollection 的转换器,但恐怕您必须接受 VS 设计器抱怨 XAML 的事实。

    <Path.Data>
        <GeometryGroup>
            <PathGeometry>
                <PathGeometry.Figures>
                    <MultiBinding Converter="{StaticResource PathFiguresConverter}">
                        <Binding Path="A"/>
                        <Binding Path="B"/>
                        <Binding Path="C"/>
                    </MultiBinding>
                </PathGeometry.Figures>
            </PathGeometry>
        </GeometryGroup>
    </Path.Data>
    

    【讨论】:

    • 谢谢。这样可行。你知道为什么 VS Designer 会抱怨,即使它编译和运行良好吗?
    • 正如消息所说,它希望您将 Figure 项目添加到 Figures 集合中,当然 MultiBinding 不是 Figure。不知道为什么它检测不到它没有添加项目,而是通过绑定设置属性。
    【解决方案2】:

    您可以尝试放置您的绑定代码而不是 PathGeometry 标记

    <Path.Data>                    
        <MultiBinding Converter="{StaticResource ResourceKey=ToPathGeometryMultiConverter}">
           <Binding Path="A"/>
           <Binding Path="B"/>
           <Binding Path="C"/>
        </MultiBinding>  
    <Path.Data>
    

    【讨论】:

    • 那行不通。它会引发 XamlParseException。多重绑定不能在 GeometryCollection 中使用。附加信息:它需要一个 DependencyObject 的 DependencyProperty。
    • 也移除 GeometryGroup 标签
    • 你在开玩笑吗?你读过我的问题吗?您给我的“解决方案”是我一开始的工作代码。现在我想扩展程序并添加 GeometryGroup(几个不同几何的集合)。
    猜你喜欢
    • 1970-01-01
    • 2015-01-20
    • 2015-03-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-26
    • 2018-03-31
    • 1970-01-01
    相关资源
    最近更新 更多