【发布时间】:2013-11-25 08:07:18
【问题描述】:
如果设置了 VM 中的标志,我想要一个扩展器来扩展。我还希望用户能够覆盖它并随意展开/折叠。以下代码不起作用,计时器启动并且扩展器反复展开和折叠 - 然后如果您手动单击扩展器,它也会切换 - 但触发器无法展开或折叠扩展器。当然,就好像手动键入的值已设置并且优先于触发器设置器。
<Expander Header="Test" BorderThickness="2" BorderBrush="Black" VerticalAlignment="Bottom">
<Expander.Style >
<Style TargetType="Expander">
<Setter Property="IsExpanded" Value="True"></Setter>
<Style.Triggers>
<DataTrigger Binding="{Binding DataContext.AmSet,
RelativeSource={RelativeSource AncestorType=Grid}}"
Value="True">
<Setter Property="IsExpanded" Value="False"></Setter>
</DataTrigger>
</Style.Triggers>
</Style>
</Expander.Style>
<Expander.Content>
<Border Background="AliceBlue" Width="50" Height="50"></Border>
</Expander.Content>
VM 有一个虚拟计时器,它只是切换标志以触发更新,如下所示
public class vm : INotifyPropertyChanged
{
public vm()
{
t = new System.Timers.Timer(1000);
t.Elapsed += t_Elapsed;
t.Start();
}
bool _AmSet = false;
public bool AmSet
{
get { return _AmSet; }
set
{
_AmSet = value;
OnPropertyChanged("");
}
}
void t_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
{
AmSet = !AmSet;
}
System.Timers.Timer t;
private void OnPropertyChanged(string prop)
{
if (PropertyChanged != null)
PropertyChanged(this, new PropertyChangedEventArgs(prop));
}
public event PropertyChangedEventHandler PropertyChanged;
}
【问题讨论】:
标签: wpf triggers datatrigger expander