[英]WPF MVVM dependency Property Get negative value
我有兩個按鈕,SEND和UNSEND。 我想使用boolean IsSended
啟用或禁用按鈕。
我已經創建了一個依賴屬性,該屬性可用於啟用一個按鈕,但是如何使用負值來控制另一個按鈕呢?
視圖
dxb:BarButtonItem Content="SEND" IsEnabled="{Binding !IsSent}"
dxb:BarButtonItem Content="UNSEND" IsEnabled="{Binding IsSent}"
視圖模型
public Boolean IsSent
{
get { return (Boolean) GetValue(IsSendedProperty); }
set { SetValue(IsSendedProperty, value); }
}
public static readonly DependencyProperty IsSendedProperty = DependencyProperty.Register("IsSent", typeof(Boolean), typeof(ViewModel), new PropertyMetadata(default(Boolean)));
WPF中有很多這樣做的目的。 IValueConverters
, DataTemplate
或覆蓋ControlTemplate
。
從長遠來看,對於您的特定應用程序,哪一個是最好的,這是很難知道的,但是在這里顯示的最簡單的是IValueConverter
。
添加一個名為NegateBoolConverter
public class NegateBoolConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
return !(bool)value;
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
return !(bool)value;
}
}
在XAML中創建此類的實例(我將所有轉換器都放在App.xaml
,但是您可以將其放在<Window.Resources>
部分中。
<Window.Resources>
<local:NegateBoolConverter x:Key="MyConverter"/>
</Window.Resources>
其中local:
是轉換器類的名稱空間
然后,您的綁定變為:
<dxb:BarButtonItem Content="SEND" IsEnabled="{Binding IsSended, Converter={StaticResource MyConverter}}">
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.