【发布时间】:2015-02-13 05:55:51
【问题描述】:
我有两个按钮 - 按钮 A 和按钮 B。最初两个按钮都是隐藏的。数据是从 Observable Collection OCollection 中获取的。
这就是我想要实现的目标:
1) 最初,两个按钮都是隐藏的。 (完成)
2) 在第一次单击时(单击任何列表视图项),按钮 A 应该可见。 (完成)
3) 在其余的点击中(点击任何其他列表视图项,除了按钮 A 保持可见的项),按钮 B 应该可见。并且按钮 A 的可见性不应变回 Collapsed。
注意:每个列表视图项只能包含一个按钮(按钮 A 或按钮 B)。
OCollection 设置为 ListView 的 ItemSource。 每个 ListView 项都是一个包含默认图像的 Grid。
XAML:
<ListView Name="lv"
ItemsSource="{Binding OCollection}"
Background="Linen"
Grid.ColumnSpan="3">
<ListView.ItemTemplate>
<DataTemplate>
<Grid Background="LightGray" Name="buttonGrid" Tag="{Binding dumyString}">
<i:Interaction.Behaviors>
<ic:DataTriggerBehavior Binding="{Binding ElementName=lv, Path=SelectedValue.dumyString}" Value="{Binding dumyString}" ComparisonCondition="Equal">
<ic:ChangePropertyAction TargetObject="{Binding ElementName=ButtonA}" PropertyName="Visibility" Value="Visible" />
</ic:DataTriggerBehavior>
<ic:DataTriggerBehavior Binding="{Binding ElementName=lv, Path=SelectedValue.dumyString}" Value="{Binding dumyString}" ComparisonCondition="NotEqual">
<ic:ChangePropertyAction TargetObject="{Binding ElementName=ButtonA}" PropertyName="Visibility" Value="Collapsed" />
</ic:DataTriggerBehavior>
<ic:DataTriggerBehavior Binding="{Binding ElementName=lv, Path=buttonGrid.Tag}" Value="{Binding dumyString}" ComparisonCondition="Equal">
<ic:ChangePropertyAction TargetObject="{Binding ElementName=ButtonB}" PropertyName="Visibility" Value="Visible" />
</ic:DataTriggerBehavior>
</i:Interaction.Behaviors>
<Image Source="/Assets/Logo.png" />
<Button Name="ButtonA" Content="ButtonA" Background="Black" Visibility="Collapsed" />
<Button Name="ButtonB" Content="ButtonB" Background="Black" Visibility="Collapsed" />
</Grid>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
为了实现 3,我将网格的标记与按钮内容进行比较。它不起作用,因为逻辑错误。那么,如何在不使用代码的情况下实现这一点。我正在遵循 MVVM 模式,所以再见 Code behind。
一个样本会很好,因为我只是一个初学者。
类:
public class dumyClass
{
public string dumyString { get; set; }
}
【问题讨论】:
标签: c# xaml mvvm microsoft-metro windows-phone-8.1