0
采用了经典的DataTemplate出发:绑定的DataTemplate父项的可见性(可见性或可见性),以在ViewModel
<DataTemplate x:Key="RegularTemplate">
<Grid>
...
</Grid>
</DataTemplate>
假设正在使用上述模板具有下面的属性呈现的视图模型对象:
private Visibility _Visibility;
public Visibility VMVisibility
{
set
{
if (value == _Visibility) return;
_Visibility = value;
if (value == System.Windows.Visibility.Visible)
{
ViewRefresher.TwentySecondsTick += Tick;
}
else
{
ViewRefresher.TwentySecondsTick -= Tick;
}
}
private get
{
return _Visibility;
}
}
我希望setter代码以某种方式在包含它的面板不呈现listboxitem时以某种方式运行。这是一个在滚动过程中隐藏/显示项目的自定义面板,所以我只需要以某种方式绑定到listboxitems的可见性。
我试过的东西沿着线:
<DataTemplate x:Key="RegularTemplate">
<Grid>
...
</Grid>
<DataTrigger Binding="{Binding IsVisible,RelativeSource=
{RelativeSource FindAncestor,
AncestorType={x:Type ListBoxItem}}}" Value="False">
<Setter Property="{Binding VMVisibility}" Value="False"/>
</DataTrigger>
</DataTemplate>
,但你不能使用datatriggers的方式。
任何想法?