WPF将矩形宽度和高度绑定到相对源

时间:2016-11-27 19:18:14

标签: c# wpf binding

我试图将矩形的宽度和高度绑定到位于不同视图/控件中的滑块。

我有一个加载2个不同视图的主视图。

其中1个视图的滑块控件名为MainFooterView,Slider控件名为MainWindowSlider

在其他视图中有一个Rectangle,我想将滑块的值绑定到该Rectangle的Width和Height但是不起作用,任何Ideas怎么做?

<Rectangle Fill="Aqua"
Width="{Binding MainWindowSlider.Value, Mode=OneWay, 
       RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type local:MainFooterView}}}" 

Height="{Binding MainWindowSlider.Value, Mode=OneWay, 
        RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type local:MainFooterView}}}"
                               />

谢谢。

UPDATE enter image description here

enter image description here

1 个答案:

答案 0 :(得分:0)

我看不到你的完整XAML,这可能无法回答确切的问题,所以我在这里使用了常规的“滑块”控件,并给它的实例一个绑定名称 - 至。如果你使用AncestorType,它依赖于向上的可视树递归(即它寻找父类,而不是子元素),但是这个解决方案将元素的宽度绑定到'兄弟'元素的宽度。

以下是滑块控件的XAML:

<UserControl x:Class="WpfApplication2.UCSlider"
 xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
    <Grid>
        <Slider Width="700"/>
    </Grid>
</UserControl>

...和矩形控件:

<UserControl x:Class="WpfApplication2.UCRectangle"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
    <Grid>
        <Rectangle Fill="PaleGreen" Height="50" />
    </Grid>
</UserControl>

然后当两者进入主窗口时:

<Grid x:Name="Grid1">
    <Grid.RowDefinitions>
        <RowDefinition Height="50"/>
        <RowDefinition Height="50"/>
    </Grid.RowDefinitions>
    <local:UCRectangle HorizontalAlignment="Left" Grid.Row="0" Width="{Binding Path=ActualWidth, ElementName=Slider1}"/>
    <local:UCSlider x:Name="Slider1" HorizontalAlignment="Left" Grid.Row="1" />
</Grid>