Окно просмотра и холст

Это мое первое вмешательство здесь. Я заранее прошу прощения за мой плохой английский, и я хотел бы, чтобы мне было понятно.

Я делаю пользовательский контроль. (Я новичок в wpf), его цель зависит от свойства "Контроль типов". Это может быть простой текстовый блок, отображающий данные (и изменяющий цвет фона в зависимости от свойства уровня), это может быть текст выделения или изображение. Цель здесь - создать динамический элемент управления. Я объясняю это, но моя настоящая проблема в его шатре.

Это мой код XAML:

                     <ControlTemplate TargetType="{x:Type local:ControlPerso}">
                <Border Background="{TemplateBinding Background}"
                        BorderBrush="{TemplateBinding BorderBrush}"
                        BorderThickness="{TemplateBinding BorderThickness}" x:Name="PART_BORDER" VerticalAlignment="Stretch" CornerRadius="10" Height="Auto">

                    <Viewbox Margin="2" StretchDirection="DownOnly" x:Name="PART_VB" Stretch="Fill">
                        <Grid x:Name="PART_GRID"  ShowGridLines="false" VerticalAlignment="Center" Height="Auto"  >
                            <Grid.RowDefinitions>
                                <RowDefinition x:Name="PART_ROWLABEL"></RowDefinition>
                                <RowDefinition x:Name="PART_ROWSCROLL"></RowDefinition>
                                <RowDefinition x:Name="PART_ROWIMAGE"></RowDefinition>
                            </Grid.RowDefinitions>


                            <Grid Grid.Row="0" x:Name="RowLabel" VerticalAlignment="Center">
                                <TextBlock  x:Name="PART_LABEL" Text="{Binding MyText, RelativeSource='{RelativeSource Mode=TemplatedParent}', UpdateSourceTrigger=PropertyChanged}" Background="Transparent"
                           FontFamily="Verdana" FontSize="{Binding FontSize, RelativeSource='{RelativeSource Mode=TemplatedParent}'}"  FontWeight="ExtraBold" HorizontalAlignment="Center">
                                    <TextBlock.BitmapEffect>
                                        <DropShadowBitmapEffect Color="Black" Direction="320" ShadowDepth="2" Opacity=".9" Softness="0.3" />
                                    </TextBlock.BitmapEffect>
                                </TextBlock>
                            </Grid>

                            <Grid Grid.Row="1"  x:Name="RowScroll" VerticalAlignment="Center">

                                <Canvas x:Name="PART_ContentControl" ClipToBounds="True" 
                                    HorizontalAlignment="Stretch" 
                                    VerticalAlignment="Stretch" 
                                    Height="{Binding ActualHeight, RelativeSource={RelativeSource Mode=TemplatedParent}}"
                                    Width="{Binding ActualWidth, RelativeSource={RelativeSource Mode=TemplatedParent}}" >

                                    <Canvas.Triggers>
                                        <EventTrigger RoutedEvent="Canvas.Loaded">
                                            <BeginStoryboard>
                                                <Storyboard x:Name="ContentTickerStoryboard" Storyboard.TargetProperty="(Canvas.Left)">
                                                    <DoubleAnimation Storyboard.TargetName="PART_Content" RepeatBehavior="Forever" />
                                                </Storyboard>
                                            </BeginStoryboard>
                                        </EventTrigger>
                                    </Canvas.Triggers>

                                    <ContentPresenter x:Name="PART_Content"                                                       
                                                  HorizontalAlignment="{TemplateBinding ContentControl.HorizontalAlignment}" 
                                                  VerticalAlignment="{TemplateBinding ContentControl.VerticalAlignment}"
                                                  Content="{Binding MyText, RelativeSource={RelativeSource Mode=TemplatedParent}, UpdateSourceTrigger=PropertyChanged}"
                                                  ContentTemplate="{TemplateBinding ContentControl.ContentTemplate}" TextBlock.FontSize="{Binding FontSize, RelativeSource='{RelativeSource Mode=TemplatedParent}'}">
                                        <ContentPresenter.BitmapEffect>
                                            <DropShadowBitmapEffect Color="Black" Direction="320" ShadowDepth="2" Opacity=".9" Softness="0.3" />
                                        </ContentPresenter.BitmapEffect>
                                    </ContentPresenter>
                                </Canvas>


                            </Grid>

                            <Grid Grid.Row="2" x:Name="RowImg"  ShowGridLines="False" VerticalAlignment="Center" Height="Auto">
                                <Image Source="C:\Users\Zebody\Pictures\thk.jpg"/>
                            </Grid>
                        </Grid>
                    </Viewbox>


                </Border>
            </ControlTemplate>

Моя проблема: Viewbox отлично работает с изображением строки сетки и строкой "label" строки сетки (идеально изменяет размер шрифта). Но он не работает с rowscroll (выделенная часть). Размер шрифта никогда не изменяется. Кажется, это из-за холста. Если я удаляю высоту и ширину, изменение размера работает, но холст не заполняет мой пользовательский элемент управления.

Что я хочу сделать: холст заполнить все мои пользовательские элементы управления и может изменить размер шрифта, когда я изменяю размер моего пользовательского элемента управления (в главном окне).

Может ли кто-нибудь помочь мне, как это сделать?

Спасибо заранее и еще раз извините за мой плохой английский

0 ответов

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