【发布时间】:2013-05-28 01:39:49
【问题描述】:
为数据源窗口中的属性指定自定义控件时,将该对象拖放到窗口上会创建一个大小为 100*100 的控件。 (控件中没有硬编码大小。)
尝试匹配标签的 HorizontalContentAlignment 和 VerticalContentAlignment 值,因为它们似乎是唯一不同的值,但控件大小无差别 100*100。 (除非我手动修复它)
向导生成的代码:
<Label Content="Url:" Grid.Column="0" HorizontalAlignment="Left" Margin="3" Grid.Row="2" VerticalAlignment="Center"/>
<HyperLinkControl x:Name="urlHyperLinkControl2" Grid.Column="1" HorizontalAlignment="Left" Height="100" Margin="3" Grid.Row="2" Uri="{Binding Url}" VerticalAlignment="Center" Width="100"/>
是否需要在我的 UserControl 中定义其他属性以覆盖默认大小?
向导生成的 XAML:
<Grid x:Name="grid1" DataContext="{StaticResource biographyViewSource}" HorizontalAlignment="Left" Margin="10,10,0,0" VerticalAlignment="Top">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="Auto"/>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
</Grid.RowDefinitions>
<Label Content="Site:" Grid.Column="0" HorizontalAlignment="Left" Margin="3" Grid.Row="0" VerticalAlignment="Center"/>
<TextBlock x:Name="siteTextBlock1" Grid.Column="1" HorizontalAlignment="Left" Margin="3" Grid.Row="0" Text="{Binding Site}" VerticalAlignment="Center"/>
<Label Content="Text:" Grid.Column="0" HorizontalAlignment="Left" Margin="3" Grid.Row="1" VerticalAlignment="Center"/>
<TextBlock x:Name="textTextBlock1" Grid.Column="1" HorizontalAlignment="Left" Margin="3" Grid.Row="1" Text="{Binding Text}" VerticalAlignment="Center"/>
<Label Content="Url:" Grid.Column="0" HorizontalAlignment="Left" Margin="3" Grid.Row="2" VerticalAlignment="Center"/>
<SharpControls:HyperLinkControl x:Name="urlHyperLinkControl2" Grid.Column="1" HorizontalAlignment="Left" Height="100" Margin="3" Grid.Row="2" Uri="{Binding Url}" VerticalAlignment="Center" Width="100"/>
<Label Content="Attribution:" Grid.Column="0" HorizontalAlignment="Left" Margin="3" Grid.Row="3" VerticalAlignment="Center"/>
<TextBlock x:Name="attributionTextBlock1" Grid.Column="1" HorizontalAlignment="Left" Margin="3" Grid.Row="3" Text="{Binding License.Attribution}" VerticalAlignment="Center"/>
<Label Content="Type:" Grid.Column="0" HorizontalAlignment="Left" Margin="3" Grid.Row="4" VerticalAlignment="Center"/>
<TextBlock x:Name="typeTextBlock1" Grid.Column="1" HorizontalAlignment="Left" Margin="3" Grid.Row="4" Text="{Binding License.Type}" VerticalAlignment="Center"/>
<Label Content="Url:" Grid.Column="0" HorizontalAlignment="Left" Margin="3" Grid.Row="5" VerticalAlignment="Center"/>
<SharpControls:HyperLinkControl x:Name="urlHyperLinkControl3" Grid.Column="1" HorizontalAlignment="Left" Height="100" Margin="3" Grid.Row="5" Uri="{Binding License.Url}" VerticalAlignment="Center" Width="100"/>
</Grid>
【问题讨论】:
-
你必须是地球上唯一一个真正使用 Visual Studio 设计器进行 WPF 开发的人。
-
大声笑,实际上我使用 Blend,但这对于创建基本模板非常方便 :-)
-
发布您的所有 UserControl XAML 代码。
-
@Aybe 如果您认为在完成设计器之后,您需要花费 2 倍的时间来修复由它生成的蹩脚的 XAML,那么您就不会这样了。
-
@HighCore:真的! (我现在正在 Blend 上制作这个)
标签: wpf xaml user-controls