2013-10-30 85 views
0

我想在使用Caliburn.Micro的WPF應用程序中使用來自Fluent功能區控件的DropDownButton。WPF功能區:DropDownButton + Caliburn.Micro事件

到目前爲止,一切都很好。我在DropDownButton中看到我的Unicorns列表爲GalleryItems。 唯一的問題是我無法得到「ShowUnicorn()」的工作。 當我點擊DropDownButton列表中的一個項目時,它什麼都不做。 我做錯了什麼?

這是我使用的代碼:

<Fluent:DropDownButton Header="Farm" 
        LargeIcon="..\..\Resources\unicorn48.png"> 
<Fluent:Gallery ItemsSource="{Binding AllUnicorns}"> 
    <Fluent:Gallery.ItemTemplate> 
     <DataTemplate> 
      <Fluent:GalleryItem Content="{Binding UnicornFoobar}" 
           cal:Message.Attach="[Event Click] = [Action ShowUnicorn()]" /> 
     </DataTemplate> 
    </Fluent:Gallery.ItemTemplate> 
</Fluent:Gallery> 

在此先感謝。

+1

我認爲這是舊的DataTemplate問題 - 對於這個漂浮在SO上的問題有幾個答案,但通常需要將'cal:Action.TargetWithoutContext'綁定到ViewModel。基本上發生的情況是,每行的'DataContext'就是實際的數據項本身(不是虛擬機),當你點擊時,CM正試圖解決數據項的方法。您需要告訴CM您希望使用操作而不是虛擬機中的數據行來定位虛擬機。 – Charleh

回答

2

感謝@Charleh的提示(我真的沒有關於它的線索) 我找到了一個很好的答案在這裏: https://stackoverflow.com/a/18980558/187650

我也改變了流利的:GalleryItem一個按鈕:

<Fluent:DropDownButton x:Name="aaaa" 
        Header="Farm" 
        LargeIcon="..\..\Resources\unicorn48.png"> 
<Fluent:Gallery ItemsSource="{Binding AllUnicorns}"> 
    <Fluent:Gallery.ItemTemplate> 
     <DataTemplate> 
      <Button Content="{Binding UnicornFoobar}" 
        cal:Message.Attach="[Event Click] = [Action ShowUnicorn($dataContext)]" 
        cal:Action.TargetWithoutContext="{Binding DataContext, ElementName=aaaa}" /> 
     </DataTemplate> 
    </Fluent:Gallery.ItemTemplate> 
</Fluent:Gallery> 
+1

今天我覺得無所不在! – Charleh