【发布时间】:2017-07-23 20:15:26
【问题描述】:
寻求帮助。 是否有机会通过 ViewModel {Binding} 更改 Listviewitem 的 ContentBorder:BorderBrush? Something like this
【问题讨论】:
标签: windows mvvm uwp win-universal-app mvvmcross
寻求帮助。 是否有机会通过 ViewModel {Binding} 更改 Listviewitem 的 ContentBorder:BorderBrush? Something like this
【问题讨论】:
标签: windows mvvm uwp win-universal-app mvvmcross
更新
您可以创建一个ItemContainerStyleSelector,您可以在其中根据列表中的当前项目应用自定义样式。
public class CustomItemContainerStyleSelector : StyleSelector
{
public Style MyStyle1 { get; set; }
public Style MyStyle2 { get; set; }
protected override Style SelectStyleCore(object item, DependencyObject container)
{
var obj = (MyObject)item;
if (/* Some kind of condition based on the bound object */)
{
return MyStyle1;
}
else
{
return MyStyle2;
}
}
}
你可以像这样使用这个样式选择器:
<ListView ItemsSource="{Binding SomeList}">
<ListView.ItemContainerStyleSelector>
<local:CustomItemContainerStyleSelector>
<local:CustomItemContainerStyleSelector.MyStyle1>
<Style TargetType="ListViewItem">
<Setter Property="BorderThickness" Value="5,0,0,0"/>
<Setter Property="BorderBrush" Value="Red"/>
</Style>
</local:CustomItemContainerStyleSelector.MyStyle1>
<local:CustomItemContainerStyleSelector.MyStyle2>
<Style TargetType="ListViewItem">
<Setter Property="BorderThickness" Value="5,0,0,0"/>
<Setter Property="BorderBrush" Value="Yellow"/>
</Style>
</local:CustomItemContainerStyleSelector.MyStyle2>
</local:CustomItemContainerStyleSelector>
</ListView.ItemContainerStyleSelector>
</ListView>
【讨论】: