Jer*_*xon 10
是的,这很容易.
您需要做的第一件事是向要绑定的类添加属性.例如,如果您使用FirstName和LastName绑定到User类,只需添加一个布尔IsSupposedToShow属性(当然,您可以使用您喜欢的任何属性).像这样:
class User: INotifyPropertyChanged
{
public event PropertyChangedEventHandler PropertyChanged;
public string FirstName { get; set; }
public string LastName { get; set; }
private bool m_IsSupposedToShow;
public bool IsSupposedToShow
{
get { return m_IsSupposedToShow; }
set
{
if (m_IsSupposedToShow == value)
return;
m_IsSupposedToShow = value;
if (PropertyChanged != null)
PropertyChanged(this,
new PropertyChangedEventArgs("IsSupposedToShow"));
}
}
}
Run Code Online (Sandbox Code Playgroud)
然后,记住,要隐藏一些项目,不要在UI中执行 - 不不不!在数据中做到这一点.我的意思是,查找要隐藏的用户记录并在后台更改其中的属性(如在视图模型中) - 让UI做出反应.使XAML服从数据.
像这样:
<DataTemplate DataType="{x:Type YourType}">
<DataTemplate.Resources>
<Style TargetType="{x:Type TextBlock}">
<Style.Triggers>
<DataTrigger Binding="{Binding IsSupposedToShow}" Value="False">
<Setter Property="Visibility" Value="Collapsed"/>
</DataTrigger>
</Style.Triggers>
</Style>
</DataTemplate.Resources>
<!-- your UI here -->
<TextBlock>
<TextBlock.Text>
<MultiBinding StringFormat="{}{0}, {1}">
<Binding Path="LastName" />
<Binding Path="FirstName" />
</MultiBinding>
</TextBlock.Text>
</TextBlock>
</DataTemplate>
Run Code Online (Sandbox Code Playgroud)
当您将IsSupposedToShow更改为false时,XAML会理解它应该更改整个DataTemplate的可见性.这一切都由WPF和presto为您联系,这是您想要的问题!
祝你好运!
我遵循的方法,从最可取到最不可取:
ListView.ItemContainerStyle,使用基于绑定属性DataTrigger进行设置Visibility。ItemTemplate或 中DataTemplate为项目使用样式。ItemsSourcefor设置为ListViewa CollectionView,并在代码隐藏中处理CollectionView'sFilter事件。有关详细信息,请参阅MSDN 对集合视图的讨论。ObservableCollection的ItemsSourceforListView并根据需要添加/删除项目。在任何情况下ValueConverter我都不会使用 a ,因为我可能对他们有一种非理性的厌恶。
我认为使用 aCollectionView可能是最正确的方法,但它们有点不雅,因为您必须编写一个事件处理程序来实现过滤。
| 归档时间: |
|
| 查看次数: |
11022 次 |
| 最近记录: |