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的方式。
任何想法?