2016-11-27 162 views
1

我試圖將我的矩形寬度和高度綁定到不同視圖/控件中的滑塊。WPF將矩形寬度和高度綁定到相對來源

我有一個主視圖,加載2個不同的視圖。

觀的1已經滑塊控件被命名爲MainFooterView和滑塊控件被命名爲MainWindowSlider

另一種觀點認爲一個有我想滑塊的寬度和高度值綁定一個矩形該矩形,但不工作,任何想法如何做到這一點?

<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

+0

在呈現/顯示矩形時,滑塊的視圖/控件位於視覺樹中與矩形相關的位置?換句話說,滑塊控件是否位於XAML樹中矩形的上方或下方。你能否顯示滑塊控件的聲明? –

+0

其中有滑塊的視圖與具有矩形的視圖位於同一級別,但滑塊視圖在具有矩形的視圖下方顯示(在可視化樹中) –

+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> 
+0

這不符合規定。你真的嘗試過嗎?另外,當我試圖做同樣的事情時,我意識到這是一般的糟糕設計。這代表了真正應該避免的用戶控件之間的緊密耦合。 (如果您的用戶控件以這種方式糾纏在一起,那麼這是一場維護噩夢。)通用模型視圖是一種可行的方式。 – kmote

+0

是的,這是嘗試和工作,你可能需要看看OP的情況更接近 - 他正在處理兩種不同的視覺樹。張貼您的解決方案,讓我們看看。 –

+0

我創建了一個全新的WPF解決方案,添加了兩個名爲View1和View2的用戶控件,並粘貼了代碼片段(以及用於MainWindow的標準Window模板)。我預計綠框的寬度對應於滑塊,但它沒有反應 - 它只是填充主窗口網格的整個頂部單元格。我錯過了什麼嗎? – kmote

相關問題