2011-09-16 20 views
2

我正在使用WPF並試圖在選擇ListView的某個項目時更改Enabled狀態,或者換句話說,如何觸發Enabled我們選擇任何ListViewItem時的按鈕狀態?當ListView的SelectedItem從null更改並執行相反操作時啓用按鈕

我試圖做與另一個按鈕,或換句話說相反的事情...我可以更改SelectedItem屬性從ListView爲null當我點擊其他按鈕,如果我使用命令?怎麼樣?

在此先感謝!

+0

您應該尋找更徹底,或者至少更注重當您試圖問一個問題正在被提出的相關問題,我認爲你的問題已經被許多類似的人所覆蓋。 (例如「相關」堆棧中的第一個) –

+0

將你的問題變成兩個很可能已被回答的問題,但不會使它更好。此外,你應該試着堅持一個問題... –

回答

6

您可以使用DataTrigger在空值時將其禁用。

例如(ListView被任命爲lv

<Button Content="Lorem Ipsum"> 
    <Button.Style> 
     <Style TargetType="{x:Type Button}"> 
      <Style.Triggers> 
       <DataTrigger Binding="{Binding SelectedItem, ElementName=lv}" 
          Value="{x:Null}"> 
        <Setter Property="IsEnabled" Value="False" /> 
       </DataTrigger> 
      </Style.Triggers> 
     </Style> 
    </Button.Style> 
</Button> 

或者你可以在IsEnabled屬性直接綁定,並添加Converter到返回各自的布爾綁定。


例以明確的選擇:

<Button Content="!"> 
    <Button.Triggers> 
     <EventTrigger RoutedEvent="Button.Click"> 
      <BeginStoryboard> 
       <Storyboard> 
        <ObjectAnimationUsingKeyFrames Storyboard.TargetName="lv" 
                Storyboard.TargetProperty="SelectedItem"> 
          <DiscreteObjectKeyFrame KeyTime="0:0:0" Value="{x:Null}"/> 
        </ObjectAnimationUsingKeyFrames> 
       </Storyboard> 
      </BeginStoryboard> 
     </EventTrigger> 
    </Button.Triggers> 
</Button> 
+0

你能幫助另一件事嗎?如果我們有另一個按鈕誰被啓用,即使SelectedItem不爲null,並且我們正在使用Commands,當我們點擊按鈕時,SelectedItem屬性會觸發爲null,這是可能的嗎? – Miguel

+0

@Miguel:您可以將一個'EventTrigger'連接到'Button.Click',並使用一個'Storyboard'和一個['ObjectAnimationUsingKeyFrames'](http://msdn.microsoft.com/zh-cn/library/system .windows.media.animation.objectanimationusingkeyframes.aspx)將單幀動畫製作爲'null'。 –

相關問題