我有一个ListView,每个项目都有一个切换按钮。我希望能够在从列表中选择项目时切换按钮,并在取消选择项目时解开。它必须遵循mvvm,所以没有代码。
这是我的设置:
<ListView x:Name="stampList"
ItemsSource="{Binding AllStampImages}">
<ListView.ItemTemplate>
<DataTemplate>
<StackPanel Orientation="Vertical" Margin="0,2,0,0">
<ToggleButton Width="72"
Height="72"
Command="{Binding StampSelectedCommand}"/>
</StackPanel>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
我的问题是,当我点击切换按钮时,未选择该项目。同样,当我点击切换按钮外部(仍在listView项目的边界内)时,该项目被选中但按钮未切换。
如何将两者捆绑在一起?
答案 0 :(得分:2)
您可能必须将Selector.IsSelected
属性绑定到您的custome属性。在这种情况下,你切换按钮的属性。
尝试类似:
<ListView.ItemContainerStyle>
<Style TargetType="{x:Type TreeViewItem}">
<Setter Property="Selector.IsSelected" Value="{Binding [Value of your toggle button], Mode=TwoWay}" />
</Style>
</ListView.ItemContainerStyle>
答案 1 :(得分:1)
最简洁的方法是使用ViewModel或Model层提供的项目集合。
class LineItem
{
private bool isSelected;
public bool IsSelected
{
get { return isSelected; }
set { isSelected = value; }
}
private String label;
public String Label
{
get { return label; }
set { label = value; }
}
}
2.1在ListView.ItemTemplate
上<ListView x:Name="list1" SelectionMode="Multiple" ItemContainerStyle="{DynamicResource ListViewItemStyle1}" Margin="0,0,334,0">
<ListView.ItemTemplate>
<DataTemplate>
<ToggleButton Margin="5" Content="{Binding Label}" IsChecked="{Binding IsSelected}"/>
</DataTemplate>
</ListView.ItemTemplate>
2.2在ListViewItem模板
上右键单击列表视图
创建模板在菜单中:“编辑其他模板/编辑生成的项目容器(空)。
填写以下代码:“
<Style x:Key="ListViewItemStyle1" TargetType="{x:Type ListViewItem}">
<Setter Property="IsSelected" Value="{Binding IsSelected}"/>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type ListViewItem}">
<Grid x:Name="Bd">
<ContentPresenter />
</Grid>
<ControlTemplate.Triggers>
<MultiTrigger>
<MultiTrigger.Conditions>
<Condition Property="IsSelected" Value="True"/>
</MultiTrigger.Conditions>
<Setter Property="Background" TargetName="Bd" Value="#FF204080"/>
</MultiTrigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
触发器基于Model IsSelected属性 网格名为Bd,以便在触发器中更改其背景。
链接到完整的工作演示:http://1drv.ms/1iyvPgt
注意强>
我试图回答这个问题。 但在我的拙见中,我不会使用ListView可能是你有充分的理由我知道。
我更喜欢使用ItemsControl,它是一个不允许进行选择的列表框。
如果需要的话,我会使用Toggle按钮和自定义模板放置蓝色背景 它将删除所有触发器的东西 ,...
最佳编码