2012-03-28 3 views
0

Я хочу иметь DockPanel (с непрозрачностью) внизу Image управление: DockPanel ширина должна быть равна текущему Image ширина.Bottom DockPanel для управления изображением

Здесь XAML:

<Window 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"> 
    <Grid> 
    <Image Source="..." /> 

    <DockPanel VerticalAlignment="Bottom" LastChildFill="True" Opacity="0.5"> 
     <Button Content="Play" /> 
     <ProgressBar Value="50" Maximum="100" Height="40" /> 
    </DockPanel> 
    </Grid> 
</Window> 

С помощью этого XAML: ширина DockPanel не равна ширине Image. Ширина DockPanel установлена ​​на Window ширина.

+0

я пропускаю 'Grid.Row = "0"' атрибуты. –

ответ

1

Это должно быть то, что вам нужно (с привязкой)

<Image Source="..." Name=myImg/> 


<DockPanel Width="{Binding ElementName=myImg, Path=ActualWidth}" VerticalAlignment="Bottom" LastChildFill="True" Opacity="0.5" > 

Возможное решение без привязки является

<Viewbox> 
     <Grid> 
      <Image Source=... /> 

      <DockPanel VerticalAlignment="Bottom" LastChildFill="True" Opacity="0.5" > 
       <Button Content="Play" /> 
       <ProgressBar Value="50" Maximum="100" Height="40" /> 
      </DockPanel> 
     </Grid> 
    </Viewbox> 
+0

Спасибо! Это работает. Но есть ли еще более элегантное решение? Может быть, какой-то контроль макета (сетка, панель и т. Д.) Для решения этой задачи? –

+0

См. Мои правки, есть также решение с элементами управления макетами. – Klaus78

+0

Спасибо. Я пробовал решение с помощью 'Viewbox'. Размер текста в тексте и ширина линии рамки масштабируются в 'Viewbox'. Как это исправить? –