2013-09-27 145 views
0

正如你可以看到this question我需要動態按鈕。現在我需要爲這些按鈕添加一些KeyBinding。快捷方式作爲字符串存儲在我的Product類中。 我嘗試使用ListBox/ListView就像我用來創建我的按鈕,但我不能在那裏添加KeyBindings。動態添加KeyBindings到按鈕

例如: 按鈕綁定到對象「可樂」,其中「C」是快捷方式。如果我點擊這個按鈕,我的OrderCommand命令被執行,我的綁定對象被用作它的參數。如果我按「C」,同樣應該工作。

此外,我需要用它來愚弄工作,比方說我有兩個產品,快捷鍵「C」,如果我按「C」不是第一個按鈕被按下。按「C」將在這兩個按鈕之間切換,如果我按下回車鍵,Command將被執行。

回答

1

可以restyle列表控件中的按鈕來設置其化InputBindings

<ListBox ItemsSource={Binding Buttons}> 
    <ListBox.Resources> 
     <Style x:Key="{x:Type Button}" BasedOn="{x:Type Button}"> 
       <Setter Property="Button.InputBindings"/> 
        <Setter.Value> 
         <KeyBinding Key="C" Command="{Binding OrderCommand}" />  
        </Setter.Value> 
       </Setter> 
     </Style> 
    </ListBox.Resources> 
</ListBox> 
+0

謝謝!我不知道Buttons有一個'InputBindings'屬性。 但不幸的是我還有一個問題: 我必須先單擊該按鈕,然後我能夠通過即可執行該命令。 我的應用程序需要通過鍵盤完全控制,所以我需要在第一個按鍵上工作的KeyBindings。 –

+0

好像您的視圖模型知道按鈕無論如何,所以,我會趕上窗口上的按鍵響應,並設置焦點從視圖模型右鍵。 –

0

你必須定義鍵綁定在DataContext的命令,你可以做象下面這樣:

<Window.InputBindings> 
    <KeyBinding Key="C" Command="{Binding OrderCommand}" /> 
</Window.InputBindings> 
+0

有沒有將KeyBinding綁定到按鈕的方法? 我的按鈕是對象,它們用作參數。 我不知道我有多少個按鈕(取決於DB數據),也許10個按鈕,也許只是3. –