繁体   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