我对WPF很新,所以请耐心等待。 我想用旁边的按钮显示组合框。按钮将包含图像。图像尺寸为64x64。我想将组合框高度作为整个网格行的主高度。我需要强制按钮与图像一起高度与组合框一样高。我不想指定任何硬编码值(稍后我将使用DevExpress主题)。
我想我有工作解决方案(至少在运行时),但我想咨询更有经验的人。解决方案基于按钮高度绑定到组合框ActualHeight。这在运行时很好用。但在设计时,按钮尺寸要大得多(它以原始尺寸显示图像)。
我的解决方案是推荐的吗?如何解决设计时间问题?我在设计时看到了一些我在运行时看不到的东西让我发疯。
我正在使用VS 2015社区版
XAML
class DenseFeatureDetector : public FeatureDetector
{
public:
DenseFeatureDetector( float initFeatureScale=1.f, int featureScaleLevels=1,
float featureScaleMul=0.1f,
int initXyStep=6, int initImgBound=0,
bool varyXyStepWithScale=true,
bool varyImgBoundWithScale=false );
protected:
...
};
图像 - 设计时/运行时
谢谢,
答案 0 :(得分:0)
这个问题可以通过Canvas解决。画布不会根据内容更改其大小,因此它可以包含比画布更大的内容,并且画布不会更改画布所在的网格的行/列的高度/宽度。因此,按钮与图像高度的绑定在运行时甚至在设计时就像奇迹一样。
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="160"/>
<ColumnDefinition/>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition />
<RowDefinition/>
</Grid.RowDefinitions>
<ComboBox x:Name="Cbx" Grid.Column="0" Grid.Row="0"/>
<Canvas Grid.Column="1" Grid.Row="0" Width="{Binding ElementName=Cbx, Path=ActualHeight}">
<Button Height="{Binding ElementName=Cbx, Path=ActualHeight}">
<Image Source="Play.png"/>
</Button>
</Canvas>
<Label Content="Hello" Grid.Column="0" Grid.Row="1"/>
<Label Content="Big Hello" Grid.Column="0" Grid.Row="2" FontSize="15"/>
</Grid>