WPF - Adopter la taille du parent
Je suis à essayer de comprendre la meilleure façon de la taille de certains contrôles, mais ne peut pas tout à fait le faire à droite. J'ai une fenêtre qui ajoute un contrôle personnalisé:
<Grid x:Name="LayoutRoot">
<my:RateGraph Grid.Column="0" x:Name="rateGraph1" Height="88" Width="380" />
</Grid>
Je puis souhaiter la taille de la sous-composantes de ce contrôle défini dans le code XAML pour remplir soit la hauteur, la largeur, ou les deux. Ce que je trouve, cependant, est que si j'enlève l'explicite largeur/hauteur et d'essayer et d'utiliser quelque chose comme VerticalAlignment="Stretch", puis-je obtenir un contrôle de la taille 0... Ce que je fais mal?
<rb:RateBase x:Class="RateBar.RateGraph"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:rb="clr-namespace:RateBar"
xmlns:sd="clr-namespace:System.Windows.Data"
mc:Ignorable="d">
<RangeBase.Resources>
<rb:JScriptConverter x:Key="JScript" TrapExceptions="False"/>
<ControlTemplate x:Key="rateGraphTemplate" TargetType="{x:Type rb:RateBase}">
<Canvas HorizontalAlignment="Stretch" VerticalAlignment="Stretch">
<rb:Axis Width="320" Height="88"/>
<Rectangle Height="88" Fill="#9690EE90" x:Name="progress">
<Rectangle.Width>
<MultiBinding Converter="{StaticResource JScript}" ConverterParameter="values[0]/values[1]*values[2]">
<Binding RelativeSource="{RelativeSource TemplatedParent}" Path="Value"/>
<Binding RelativeSource="{RelativeSource TemplatedParent}" Path="Maximum"/>
<Binding RelativeSource="{RelativeSource TemplatedParent}" Path="Width"/>
</MultiBinding>
</Rectangle.Width>
</Rectangle>
<Polygon Fill="#FF06B025" x:Name="graph" />
<Label Canvas.Left="0" Width="380" HorizontalContentAlignment="Right" Foreground="Black" Content="{Binding Path=Caption, RelativeSource={RelativeSource TemplatedParent}}">
<Canvas.Bottom>
<MultiBinding Converter="{StaticResource JScript}" ConverterParameter="(values[2]*0.8)/values[1]*values[0]">
<Binding RelativeSource="{RelativeSource TemplatedParent}" Path="Rate"/>
<Binding RelativeSource="{RelativeSource TemplatedParent}" Path="RateMaximum"/>
<Binding RelativeSource="{RelativeSource TemplatedParent}" Path="Height"/>
</MultiBinding>
</Canvas.Bottom>
</Label>
<Line X1="0" X2="380" Stroke="Black">
<Canvas.Bottom>
<MultiBinding Converter="{StaticResource JScript}" ConverterParameter="(values[2]*0.8)/values[1]*values[0]">
<Binding RelativeSource="{RelativeSource TemplatedParent}" Path="Rate"/>
<Binding RelativeSource="{RelativeSource TemplatedParent}" Path="RateMaximum"/>
<Binding RelativeSource="{RelativeSource TemplatedParent}" Path="Height"/>
</MultiBinding>
</Canvas.Bottom>
</Line>
</Canvas>
</ControlTemplate>
</RangeBase.Resources>
</rb:RateBase>
source d'informationauteur Ian
Vous devez vous connecter pour publier un commentaire.
La
Width
etHeight
propriétés sont principalement conçus pour le réglage de demandé dimensions.Si vous utilisez des mises en pages dynamiques avec des étirements, etc. lier à la
ActualWidth
etActualHeight
propriétés:J'ai essayé de faire quelque chose de similaire, a trouvé que cela fonctionne bien:
Découvrez: social.msdn.microsoft