2017-01-10 45 views
0

我是WPF新手,並且遇到問題。我想只在列表框的en元素被選中時才啓用按鈕,否則它必須被禁用。我嘗試了簡單的驗證規則,但它不起作用。任何人都可以給我一個提示嗎? Ty如何在列表框上使用WPF驗證規則以啓用「確定」按鈕

+0

如果使用MVVM和'綁定到該按鈕命令ICommand'接口,你可以定義一個'CanExecute'代表來檢查,如果在的SelectedItem = null – mechanic

回答

1

您不使用ValidationRule來啓用按鈕,但您可以使用帶有觸發器的Button樣式,該觸發器綁定到ListBox的SelectedItem屬性,並將Button的IsEnabled屬性設置爲false,如果SelectedItem屬性爲ListBox中返回一個空引用,如:

<ListBox x:Name="lb"> 
    <ListBoxItem>1</ListBoxItem> 
    <ListBoxItem>2</ListBoxItem> 
    <ListBoxItem>3</ListBoxItem> 
</ListBox> 

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

好吧,這個效果很好TY。但是我必須在滿足2個條件時啓用該按鈕(文本框不爲空,並且選擇了列表框的一個項目)。我怎樣才能做到這一點?

您可以添加另一個觸發:

<ListBox x:Name="lb"> 
    <ListBoxItem>1</ListBoxItem> 
    <ListBoxItem>2</ListBoxItem> 
    <ListBoxItem>3</ListBoxItem> 
</ListBox> 

<TextBox x:Name="txt" /> 

<Button Content="Button"> 
    <Button.Style> 
     <Style TargetType="Button"> 
      <Style.Triggers> 
       <DataTrigger Binding="{Binding SelectedItem, ElementName=lb}" Value="{x:Null}"> 
        <Setter Property="IsEnabled" Value="False" /> 
       </DataTrigger> 
       <DataTrigger Binding="{Binding Text.Length, ElementName=txt}" Value="0"> 
        <Setter Property="IsEnabled" Value="False" /> 
       </DataTrigger> 
      </Style.Triggers> 
     </Style> 
    </Button.Style> 
</Button> 
+0

好的,這很有效。但是我必須在滿足2個條件時啓用該按鈕(文本框不爲空,並且選擇了列表框的一個項目)。我怎樣才能做到這一點? –

+0

您可以添加另一個觸發器。請參閱我編輯的答案。請記住在解決原始問題後接受答案,然後問您是否有其他問題。 – mm8

+0

這完美的作品!謝謝^^ –

相關問題