2009-12-06 197 views
0

我有一個UserControl包含一個列表框。父數據綁定自定義控件

在父窗口上,我有這個UserControl和一個按鈕。

理想情況下,我想在父按鈕上使用ChangePropertyAction行爲,並將其綁定到UserControl的列表框計數。

這個想法是,如果在usercontrol內的列表框中沒有條目,父窗口上的按鈕將被隱藏。列表框被綁定到一個observablecollection。

我是否創建了一個DependencyProperty來做到這一點?我不知道如何將列表框的數量綁定到這個屬性。

非常感謝任何洞察正確的方式來做到這一點。

回答

0

我結束了使用信使類從MVVM期貨項目,讓用戶控件的視圖模型信號其他ViewModels的變化。

這讓我們的多個監聽器監視相同的更改,而不需要額外的依賴項屬性。

0

您可以使用ElementName綁定從Button達到ListBox狀態。然後你想用BooleanToVisibilityConverter來做魔術。

像這樣:

<Window x:Class="NestedTreeTest.Window1" 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    Title="Window1" Height="200" Width="300"> 

    <Window.Resources> 
     <BooleanToVisibilityConverter x:Key="boolToVisibilityConverter" /> 
    </Window.Resources> 

    <StackPanel> 
     <Button Visibility="{Binding ElementName=myList, Path=HasItems, Converter={StaticResource boolToVisibilityConverter}}"> 
       Text 
     </Button> 
     <ListBox x:Name="myList"> 
      <!--<ListBoxItem>Item A</ListBoxItem>--> 
     </ListBox> 
    </StackPanel> 
</Window> 

註釋掉或取消註釋ListBoxItems看到它的工作...

+0

謝謝你的幫助。但問題是列表框是在UserControl中。因此,對窗口1,這是更多: <按鈕能見度= 「{綁定的ElementName = myList中,路徑= HasItems,轉換器= {StaticResource的boolToVisibilityConverter}}」> 文本 <控制:MyControl /> 我需要綁定到MyControl中的列表框。我不知道如何從UserControl公開這個問題。 – mfanto 2009-12-07 04:13:40