帆布高度& width绑定到xml

时间:2011-10-19 00:07:59

标签: wpf xaml data-binding multibinding imultivalueconverter

过去我创建了一个winform用户控件,它继承了imagebox控件,用户可以通过用鼠标绘制一个矩形来选择部分图像。 现在我想对WPF做同样的事情。我写了这个XAML代码:

                    <StackPanel Width="321" Height="241">
                        <Canvas x:Name="SampleImageCanvas" 
                                MouseMove="SampleImageCanvas_MouseMove" 
                                MouseDown="SampleImageCanvas_MouseDown" 
                                MaxHeight="240" MaxWidth="320" >
                            <Canvas.Width>
                                <MultiBinding Converter="{StaticResource SizeConverter}" Mode="OneWay">
                                    <Binding XPath="./Size/Width" />
                                    <Binding XPath="./Size/Ratio" />
                                </MultiBinding>
                            </Canvas.Width>
                            <Canvas.Height>
                                <MultiBinding Converter="{StaticResource SizeConverter}" Mode="OneWay">
                                    <Binding XPath="./Size/Height" />
                                    <Binding XPath="./Size/Ratio" />
                                </MultiBinding>
                            </Canvas.Height>  
                            <Canvas.Background>
                                <ImageBrush x:Name="SampleImage" ImageSource="{Binding XPath=./SampleImage}" Stretch="Uniform"/>
                            </Canvas.Background>
                            <Rectangle x:Name="ROI"
                                Canvas.Top="{Binding XPath=./ROI/Top, Mode=TwoWay}"
                                Width="{Binding XPath=./ROI/Width, Mode=TwoWay}"
                                Height="{Binding XPath=./ROI/Height, Mode=TwoWay}" 
                                Canvas.Left="{Binding XPath=./ROI/Left, Mode=TwoWay}"
                                Stroke="#FFD13750"
                                />
                       </Canvas>
                    </StackPanel>

数据存储在xml文档中。图像比画布大,所以它必须均匀拉伸,以适应画布的最大尺寸,我希望画布调整到图像缩放显示的大小,因此图像填充100%的画布没有利润。 当我有这个时,鼠标移动/进入/退出事件将仅设置为图像边框。

问题是画布高度绑定值,导致图像不显示,尽管它的定义与画布宽度相同,并且转换器返回corect值。 当我将高度设置为精确值而不是绑定值时,如Height =“240”,它可以正常工作。

谢谢!

0 个答案:

没有答案