привязка к свойству width в коде позади - PullRequest
6 голосов
/ 17 мая 2011

У меня есть ситуация, когда мне нужно создать окно просмотра одной кнопкой. XAML для этого, как показано ниже: Пожалуйста, соблюдайте свойство ширины viewbox. Ширина должна быть увеличена / уменьшена в соответствии с ползунком (перемещение вправо увеличивает ее, а влево уменьшает). Как указано ниже, я знаю, как это сделать в xaml, и он отлично работает. Но мое требование состоит в том, чтобы иметь возможность создавать viewbox в коде и назначать ему свойства.

 <WrapPanel x:Name="_wrpImageButtons" Grid.IsSharedSizeScope="True"
           ScrollViewer.CanContentScroll="True" d:LayoutOverrides="Height" 
           Margin="5">
    <Viewbox x:Name="_ScaleButton" 
             Width="{Binding Value, ElementName=ZoomSlider}" Stretch="Fill">
         <CustomButton:_uscVCARSImagesButton x:Name="_btnImage1"/>
    </Viewbox>
 </WrapPanel>

Спасибо.

Ответы [ 2 ]

7 голосов
/ 17 мая 2011

Это должно делать то, что вы хотите:

Viewbox x = new Viewbox();
Binding bnd = new Binding("Value") { ElementName = "ZoomSlider"};
BindingOperations.SetBinding(x, Viewbox.WidthProperty, bnd);
// ... Code to insert the Viewbox into the WrapPanel etc.
4 голосов
/ 17 мая 2011

Вы можете относительно легко создать привязку в Code Behind:

var widthBinding = new Binding("Value") { ElementName = "ZoomSlider" };

_ScaleButton.SetBinding(FrameworkElement.WidthProperty, widthBinding);
...