簡體   English   中英

WPF MVVM依賴項屬性獲取負值

[英]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中有很多這樣做的目的。 IValueConvertersDataTemplate或覆蓋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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM