Высота холста и ширина привязки к XML

В прошлом я создавал пользовательский элемент управления 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. Когда я устанавливаю высоту на точное значение вместо связанного значения, например, Высота ="240", это работает.

Спасибо!

0 ответов

Другие вопросы по тегам