【问题标题】:Datatrigger doesn't work?数据触发器不起作用?
【发布时间】:2013-12-04 21:27:11
【问题描述】:

我有问题。我想在没有活动选项卡的地方隐藏 TabControl。有关选项卡的信息保存在 WidocznoscTabControl 属性中(如果有任何选项卡 WidocznoscTabControl =1,如果没有选项卡 WidocznoscTabControl=0)。我曾尝试使用 DataTrigger,但它不起作用,我不知道为什么。我是初学者,我还在学习。这就是我向你寻求帮助的原因。这是 MainWindowResources.xaml 文件的一部分

<DataTemplate x:Key="WorkspacesTemplate">
    <TabControl 
      x:Name="Tabs"
      IsSynchronizedWithCurrentItem="True" 
      ItemsSource="{Binding}" 
      ItemTemplate="{StaticResource ClosableTabItemTemplate}"
      Margin="4"
        />

     <DataTemplate.Triggers>
          <DataTrigger Binding="{Binding Path=WidocznoscTabControl}" Value="0">
             <Setter TargetName="Tabs" Property="Opacity" Value="0"/>
          </DataTrigger>
      </DataTemplate.Triggers>
</DataTemplate>

WidocznoscTabControl 在 MainWindowViewModel.cs 文件中声明和初始化。

【问题讨论】:

  • 需要更多信息:WidocznoscTabControl 的类型是什么?
  • WidocznoscTabControl 的类型是 int。但是,我尝试使用 bool 而不是 int,但也没有用。
  • 你设置DataContext好吗?当您在调试模式下运行应用程序时,您是否在输出窗口中看到任何绑定错误?
  • 嗯,DataContext 设置正确。更重要的是,输出窗口没有错误。

标签: c# wpf mvvm datatrigger


【解决方案1】:

我的第一个猜测是您没有将 ViewModel 中的更改通知您的视图。如果 WidocznoscTabControl 设置为零,请确保调用 OnPropertyChanged。

另一个原因可能是将不透明度设置为零没有达到预期的效果。您应该尝试将属性 Visiblity 设置为 false。可以在here 找到有关如何执行此操作的信息。

【讨论】:

  • 好吧,我尝试手动将不透明度设置为 0,它确实达到了预期的效果。当然 WidocznoscTabControl 的值设置为 0。(如果我单击一个按钮 WidocznoscTabControl 设置为 1,如果我单击另一个按钮 WidocznoscTabControl 设置为 0。为了确定该属性的值,每次单击 MessageBox 后显示了 WidocznoscTabControl 的值)。但如果可以的话,看看这个属性:
  • 公共 int WidocznoscTabControl { 获取 { 返回 _WidocznoscTabControl; } 设置 { if (value != _WidocznoscTabControl) _WidocznoscTabControl = value; OnPropertyChanged(() => WidocznoscTabControl); } }
  • 好吧,那我真的没有确定的答案。对不起。
猜你喜欢
  • 2011-01-26
  • 1970-01-01
  • 1970-01-01
  • 2012-03-10
  • 2020-08-10
  • 1970-01-01
  • 1970-01-01
  • 2011-12-05
  • 2014-04-17
相关资源
最近更新 更多