2011-08-25 93 views
0

我有一個樹形視圖和一個刪除按鈕,我希望僅在選擇樹視圖項目時啓用刪除按鈕。通過數據綁定禁用按鈕

我曾嘗試以下,但它不工作:

<Button.Style> 
    <Style> 
    <Style.Triggers> 
    <DataTrigger Binding="{Binding ElementName=tv_cats, Path=Items.IndexOf(SelectedItem)}" Value="-1"> 
    <Setter Property="Button.IsEnabled" Value="false" /> 
    </DataTrigger> 
    </Style.Triggers> 
    </Style> 
</Button.Style> 

測試 - 在後面的代碼 -

tv_cats.Items.IndexOf(tv_cats.SelectedItem).ToString() 

返回-1,如果電視項目沒有選擇和電視項目指標,如果它是。

如何在XAML中使用此屬性?

回答

2

夫婦的方式做到這一點,

  1. 通過對評估TreeView控件的selectedItem屬性(按鈕默認情況下啓用按鈕,啓用觸發器爲假時的SelectedItem =「{x:空} 「

  2. 的元件特性從button.Enabled結合到通過轉換器(實現的IValueConverter),其將所述項存在爲布爾值TreeView.SelectedItem。

  3. 在MVVM,你CAN H在ViewModel上公開一個ButtonIsEnabled屬性,它以某種方式檢查SelectedItem的值(最簡單的方法是將TreeViews Selected Item屬性綁定到VIewModel上的另一個屬性),並從中確定啓用狀態。

+0

非常感謝 –

+0

我通常使用選項三與命令綁定。您必須小心如何使用命令綁定,因爲該檢查運行很多。 – tsells

1

嘗試以下操作:

<Button.Style> 
    <Style > 
     <Style.Triggers>  
      <DataTrigger Binding="{Binding ElementName=tv_cats, Path=SelectedItem}" Value="{x:Null}">  
       <Setter Property="Button.IsEnabled" Value="false" />  
      </DataTrigger> 
     </Style.Triggers> 
    </Style> 
</Button.Style> 

確保你沒有的IsEnabled在按鈕XAML聲明的顯式聲明=「假」。否則觸發器將不起作用。

+0

謝謝HCL,感謝幫助 –