2009-11-05 97 views
0

我有一個列表框定義如下圖所示:WPF命令的按鈕ListBoxItems

<ListBox x:Name="lstMedias" ItemsSource="{Binding Medias}" Width="Auto" Height="Auto"> 
    <ListBox.ItemTemplate> 
     <DataTemplate> 
      <Button Content="{Binding Name}" Tag="{Binding Name}" Click="Button_Click" Command="{Binding Path=LoadSimpleMoviePopupCommand}"> 
       <Button.Resources> 
        <Converters:LoadMovieMultiConverter x:Key="LoadMovieMultiConverter" /> 
       </Button.Resources>          
       <Button.CommandParameter> 
        <MultiBinding Converter="{StaticResource LoadMovieMultiConverter}"> 
         <MultiBinding.Bindings> 
          <Binding ElementName="DragDropCanvas" /> 
          <Binding Path="Tag" RelativeSource="{RelativeSource Self}" /> 
         </MultiBinding.Bindings> 
        </MultiBinding> 
       </Button.CommandParameter> 
       </Button> 
      </DataTemplate> 
     </ListBox.ItemTemplate> 
</ListBox> 

當試圖調用命令LoadSimpleMoviePopupCommand,命令不叫,但調用click事件時,事件引發。

你有一個想法,爲什麼?這是正常的行爲?我們必須欺騙像ListBoxItem雙擊嗎?

回答

1

大概是因爲綁定失敗。檢查VS的輸出窗口,看看是否有任何綁定錯誤。我懷疑LoadSimpleMoviePopupCommand屬性不在您的數據項類(即您的Media類)上。

+0

我想喜歡你,但我試圖把一個按鈕,列表框外,和它的作品裏面綁定!所以,這意味着它不是一個綁定問題,而是與列表框相關的東西! – DavidP 2009-11-05 15:48:05

0

有同樣的問題,試試這個

<Button Command="{Binding DataContext.YourCommand,RelativeSource={RelativeSource AncestorType={x:Type ListBox}}}" 

這是很正常的,他無法找到你的命令列表框裏面綁定,因爲你在列表框,所以他開始像

<DataTemplate DataType ... 

「會尋找該數據類型,而不是視圖模型(我假設:)