這是安全嗎?
總之,是的,它是安全的 - 因爲你有一個FallbackValue
,如果綁定失敗。
你可以使用一個良好的醇」 DataTrigger
我已經在WPF忘記了他們(我已經工作的WinRT最近很多 - 他們是不可用在)
這將綁定觸發您的Length
,然後當條件滿足 - 按鈕的IsEnabled
屬性設置爲(在這種情況下)false
。
<Button Content="Press Me">
<Button.Style>
<Style TargetType="Button">
<Style.Triggers>
<DataTrigger Binding="{Binding MyArray.Length}" Value="0">
<Setter Property="IsEnabled" Value="False"/>
</DataTrigger>
</Style.Triggers>
</Style>
</Button.Style>
</Button>
綁定到你的視圖模型一個bool
你也對你的ViewModel在此使用public bool
屬性,然後基地的IsEnabled
:
public bool IsEnabled { get { return MyArray.Length > 0; } }
和在你的Xaml中:
<Button
Content="Press Me"
IsEnabled="{Binding IsEnabled}}">
</Button>
使用的IValueConverter
最好的選擇使用WinRT的
你也可以創建和使用Converter
它可以根據你的後病情給予回boolean
任何人。
請參閱http://wpftutorial.net/ValueConverters.html瞭解如何在您的WPF中實現轉換器的教程。
A轉換器實現IValueConverter
,而且會是這個樣子:
public class BoolToVisibilityConverter : IValueConverter
{
public object Convert(object value, Type targetType,
object parameter, CultureInfo culture)
{
// Do the conversion from bool to visibility
}
public object ConvertBack(object value, Type targetType,
object parameter, CultureInfo culture)
{
// Do the conversion from visibility to bool
}
}
不要忘記引用它在你的用戶控件/視圖 - 甚至在你App.xaml
爲了使用它作爲一個StaticResource
。
例子?
根據您自己的邏輯,您可以根據自己的邏輯解釋自己的轉換器。
在這種情況下,你可以創建一個轉換器,並在XAML中使用它,就像這樣:
您可以創建一個ArrayNotNullOrEmptyToBooleanConverter
,並用它在XAML中,像這樣:
<Button
Content="Press Me"
IsEnabled="{Binding MyArray, Converter={Binding ArrayNotNullOrEmptyToBooleanConverter}}">
</Button>
或者只是簡單地創建一個IsGreaterThanZeroToBooleanConverter
,然後使用在XAML中,像這樣:
<Button
Content="Press Me"
IsEnabled="{Binding MyArray.Length, Converter={Binding IsGreaterThanZeroToBooleanConverter}}">
</Button>
希望這有助於! :)
它禾rks表示數組爲空時IsEnabled設置爲false?更好地使用綁定轉換器。 – Clemens
同意,根據你的數組長度,使用'IValueConverter'或者在ViewModel上有一個屬性返回布爾值。 – Michael