我试图将矩形的宽度和高度绑定到位于不同视图/控件中的滑块。
我有一个加载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}}}"
/>
谢谢。
答案 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>