如何解决如何根据对象的出现更改边框的样式?
我创建了一个position: absolute
。在此列表视图中,每个矩形代表一个业务中的表。这些表可以有收据。我为没有收据的表格制作了$('.owl-carousel').owlCarousel({ stagePadding: 40,loop:false,margin:2,nav:false,items:2,left: -30 })
样式。但是,如果表有添加项,我想更改表的样式。
ListView
代码:
{StaticReseource closeTableBorderStyle}
表类:
closeTableBorderStyle
ListView:
<Style x:Key="closeTableBorderStyle" TargetType="Border">
<Setter Property="Height" Value="100"/>
<Setter Property="Background" Value="#0a7d38"/>
<Setter Property="CornerRadius" Value="8"/>
<Setter Property="Margin" Value="5,5,0"/>
<Setter Property="Cursor" Value="Hand"/>
<Style.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<Setter Property="Background" Value="#00d052"/>
</Trigger>
</Style.Triggers>
</Style>
来到public class Table
{
public int tableID { get; set; }
public string tablename { get; set; }
public List<OrderReceipt> tableReceipt { get; set; }
}
类来定义一个名为 x:Name="ListViewTableBorder"
SelectionChanged="ListViewTableBorder_SelectionChanged"
HorizontalContentAlignment="Stretch"
VerticalContentAlignment="Stretch">
<ListView.ItemsPanel>
<ItemsPanelTemplate>
<UniformGrid Columns="5"/>
</ItemsPanelTemplate>
</ListView.ItemsPanel>
<ListView.ItemContainerStyle>
<Style TargetType="{x:Type ListViewItem}">
<Setter Property="Background" Value="Transparent" />
<Setter Property="BorderBrush" Value="Transparent"/>
<Setter Property="VerticalContentAlignment" Value="Center"/>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type ListViewItem}">
<Grid Background="{TemplateBinding Background}">
<Border Name="Selection" Visibility="Collapsed" />
<Border Style="{StaticResource sales_border}">
<TextBlock Text="{Binding tablename}"
HorizontalAlignment="Center"
VerticalAlignment="Center"
Foreground="White"
FontSize="20"/>
</Border>
<GridViewRowPresenter Grid.RowSpan="2"
Margin="{TemplateBinding Padding}"
HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}"
VerticalAlignment="{TemplateBinding VerticalContentAlignment}"
SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}"/>
</Grid>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</ListView.ItemContainerStyle>
</ListView>
的布尔变量,然后编写如下所示的算法,但是我做不到。
Table
总而言之,如果isTableOpen
> 0,则我希望边框样式为if isTableOpen = false
{
style -> closeTableBorder
}
else
{
stlye -> openTableBorder
}
。
其他tableReceipt.Count
openBorderTableStyle。
解决方法
您可以通过为目标Border
提供类似TableNameBorder
的名称,并向模板添加触发器,以在{时将边框的Style
设置为closeBorderTableStyle
{1}}是isTableOpen
。
false
如果要更改属性,请考虑以<ControlTemplate TargetType="{x:Type ListViewItem}">
<Grid Background="{TemplateBinding Background}">
<Border Name="Selection" Visibility="Collapsed" />
<Border x:Name="TableNameBorder" Style="{StaticResource sales_border}">
<TextBlock Text="{Binding tablename}"
HorizontalAlignment="Center"
VerticalAlignment="Center"
Foreground="White"
FontSize="20"/>
</Border>
<GridViewRowPresenter Grid.RowSpan="2"
Margin="{TemplateBinding Padding}"
HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}"
VerticalAlignment="{TemplateBinding VerticalContentAlignment}"
SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}"/>
</Grid>
<ControlTemplate.Triggers>
<DataTrigger Binding="{Binding isTableOpen}" Value="False">
<Setter TargetName="TableNameBorder" Property="Style" Value="{StaticResource closeTableBorderStyle}"/>
</DataTrigger>
</ControlTemplate.Triggers>
</ControlTemplate>
类型实现INotifyPropertyChanged
,否则更改将不会反映在用户界面中。同样,如果要在运行时修改集合,则应使用Table
而不是ObservableCollection<T>
。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。