簡體   English   中英

如何在應用程序設置中為用戶控件設置樣式?

[英]How to set a style for usercontrol in application setting?

[我的主要想法是為用戶控件設置可見/隱藏。 我將WPF與Mvvmcross一起使用。]

我有一個用戶控件調用SpinningWheelUserControl。 我想用datatrigger看到/隱藏它。 以下是我在App.xaml中的xaml代碼

在App.xaml中,我添加了usercontrol的命名空間,如下所示。

xmlns:local="clr-namespace:UserControl"

以下是我的用戶控件的樣式設置。

<Style x:Key="SpinningWheel" TargetType="{x:Type local:SpinningWheelUserControl}" >
    <Style.Triggers>
        <DataTrigger Binding="{Binding IsVisible}" Value="true">
            <Setter Property="Visibility" Value="Visible" />
        </DataTrigger>
        <DataTrigger Binding="{Binding IsVisible}" Value="false">
            <Setter Property="Visibility" Value="Hidden" />
        </DataTrigger>
    </Style.Triggers>
</Style>

SpinningWheel有一個類

public class SpinningWheelViewModel 
    : MvxNotifyPropertyChanged
{
    public bool IsVisible { get; set; }
}

在父類的構造函數中,我使用像這樣的代碼

SpinningWheel = new SpinningWheelViewModel();
SpinningWheel.IsVisible = false;

用戶控件在第一次運行時被隱藏。 但是當我將IsVisble更改為true時,它沒有任何變化。

SpinningWheel.IsVisible = true

您需要這樣設置Visibility而不是IsVisible

SpinningWheel.Visibility = Visibility.Visible;

哦,現在我明白了,您正在設置自定義IsVisibility而不是UIElement屬性。

代碼的問題是您沒有引發PropertyChanged來讓UI知道基礎源對象中的某些屬性發生了變化。

private bool isVisible;
public bool IsVisible
{
   get { return isVisible;}
   set
   {
      if(isVisible != value)
      {
         isVisible = value;
         RaisePropertyChanged("IsVisible");
      }
   }
}

假設您已經在類上實現了INotifyPropertyChanged

這個n + 1個視頻,稱為N = 34:一個數據綁定的繁忙對話框完全顯示了如何執行您要執行的操作。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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