Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何在应用程序设置中设置usercontrol的样式?_C#_Wpf_User Controls_Mvvmcross - Fatal编程技术网

C# 如何在应用程序设置中设置usercontrol的样式?

C# 如何在应用程序设置中设置usercontrol的样式?,c#,wpf,user-controls,mvvmcross,C#,Wpf,User Controls,Mvvmcross,[我的主要想法是为usercontrol设置可见/隐藏。我将WPF与Mvvmcross一起使用。] 我有一个用户控件调用SpinningWheelUserControl。我想用datatrigger来显示/隐藏它。下面是我在App.xaml中的xaml代码 在App.xaml中,我添加了usercontrol的名称空间,如下所示 xmlns:local="clr-namespace:UserControl" 下面是my usercontrol的样式设置 <Style x:Key="Spi

[我的主要想法是为usercontrol设置可见/隐藏。我将WPF与Mvvmcross一起使用。]

我有一个用户控件调用SpinningWheelUserControl。我想用datatrigger来显示/隐藏它。下面是我在App.xaml中的xaml代码

在App.xaml中,我添加了usercontrol的名称空间,如下所示

xmlns:local="clr-namespace:UserControl"
下面是my 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 = new SpinningWheelViewModel();
SpinningWheel.IsVisible = false;
用户控件在第一次运行时是隐藏的。但当我把易见变为真时,它没有变化

SpinningWheel.IsVisible = true

您需要设置
Visibility
,而不是像这样设置
isvisibility

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");
      }
   }
}

假设您已经在类上实现了。

您需要设置
可见性
,而不是像这样设置
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");
      }
   }
}

假设您已经在您的类上实现了。

这个名为n+1的视频确切地显示了如何做您正在尝试做的事情。

这个名为n+1的视频确切地显示了如何做您正在尝试做的事情。

我不能使用可见性,因为核心项目是一个可移植类,我将用于其他平台。谢谢很我忘记在集合块中添加RaisePropertyChanged(()=>IsVisible)。我无法使用可见性,因为核心项目是一个可移植类,我将用于其他平台。非常感谢。我忘记在set块中添加RaisePropertyChanged(()=>IsVisible)。