UWP 使用绑定布尔值 属性 在 XAML 的列表视图中更改文本
UWP Change text inside a listview in XAML using binded boolean property
我有一个带有网格和内部元素的列表视图。一个是文本块,如果 binded 属性 为真,我想显示一个 Segoe MDL2 图标,如果为假,则显示另一个图标(名为 MListEntryControl)。我读过的所有示例都是针对 UWP 之前的,或者不太了解 visualstatetriggers 如何用于满足这种特定需求。谢谢。
<ListView x:Name="MovementsList" Grid.Row="3" Grid.ColumnSpan="3" Margin="0,12,0,0" IsItemClickEnabled="False" SelectionMode="None" MinHeight="40">
<ListView.ItemTemplate>
<DataTemplate>
<Grid VerticalAlignment="Center">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"></ColumnDefinition>
<ColumnDefinition Width="*"></ColumnDefinition>
<ColumnDefinition Width="*"></ColumnDefinition>
<ColumnDefinition Width="*"></ColumnDefinition>
<ColumnDefinition Width="auto"></ColumnDefinition>
</Grid.ColumnDefinitions>
<TextBlock Name="MListProvider" Text="{Binding Company.Name}" HorizontalAlignment="Stretch" Margin="0,0,12,0" ></TextBlock>
<TextBlock Name="MListProduct" Text="{Binding Product.Name}" HorizontalAlignment="Stretch" Margin="0,0,12,0" Grid.Column="1"></TextBlock>
<TextBlock Name="MListTemp" Text="{Binding Temperature}" HorizontalAlignment="Stretch" Margin="0,0,12,0" Grid.Column="2"></TextBlock>
<TextBlock x:Name="MListEntryControl" Grid.Column="3" FontFamily="Segoe MDL2 Assets" FontSize="22" Text=""></TextBlock>
<Button Click="DeleteMovement_Click" Tag="{Binding MovementId}" Grid.Column="4" HorizontalAlignment="Center">
<TextBlock Text="" FontFamily="Segoe MDL2 Assets" FontSize="22"></TextBlock>
</Button>
</Grid>
</DataTemplate>
</ListView.ItemTemplate>
<ListView.ItemContainerStyle>
<Style TargetType="ListViewItem">
<Setter Property="HorizontalContentAlignment" Value="Stretch" />
<Setter Property="Background" Value="#E0E4CC"/>
</Style>
</ListView.ItemContainerStyle>
</ListView>
UWP Change text inside a listview in XAML using binded boolean property
对于您的场景,我认为 XamlBehaviors package is suite for you and may be easier. When the binding data updated can trigger a ChangePropertyAction
. You can reference the DataTrigger
sample here 的 DataTrigger
。
例如布尔值属性命名为"trueorfalse",代码示例如下:
<TextBlock
x:Name="MListEntryControl"
Grid.Column="3"
FontSize="22"
Text="">
<Interactivity:Interaction.Behaviors>
<Interactions:DataTriggerBehavior
Binding="{Binding trueorfalse}"
Value="true" ComparisonCondition="Equal">
<Interactions:ChangePropertyAction
PropertyName="FontFamily"
TargetObject="{Binding ElementName=MListEntryControl}"
Value="Segoe MDL2 Assets" />
</Interactions:DataTriggerBehavior>
<Interactions:DataTriggerBehavior
Binding="{Binding trueorfalse}"
Value="false" ComparisonCondition="Equal">
<Interactions:ChangePropertyAction
PropertyName="FontFamily"
TargetObject="{Binding ElementName=MListEntryControl}"
Value="Yu Gothic UI" />
</Interactions:DataTriggerBehavior>
</Interactivity:Interaction.Behaviors>
</TextBlock>
我有一个带有网格和内部元素的列表视图。一个是文本块,如果 binded 属性 为真,我想显示一个 Segoe MDL2 图标,如果为假,则显示另一个图标(名为 MListEntryControl)。我读过的所有示例都是针对 UWP 之前的,或者不太了解 visualstatetriggers 如何用于满足这种特定需求。谢谢。
<ListView x:Name="MovementsList" Grid.Row="3" Grid.ColumnSpan="3" Margin="0,12,0,0" IsItemClickEnabled="False" SelectionMode="None" MinHeight="40">
<ListView.ItemTemplate>
<DataTemplate>
<Grid VerticalAlignment="Center">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"></ColumnDefinition>
<ColumnDefinition Width="*"></ColumnDefinition>
<ColumnDefinition Width="*"></ColumnDefinition>
<ColumnDefinition Width="*"></ColumnDefinition>
<ColumnDefinition Width="auto"></ColumnDefinition>
</Grid.ColumnDefinitions>
<TextBlock Name="MListProvider" Text="{Binding Company.Name}" HorizontalAlignment="Stretch" Margin="0,0,12,0" ></TextBlock>
<TextBlock Name="MListProduct" Text="{Binding Product.Name}" HorizontalAlignment="Stretch" Margin="0,0,12,0" Grid.Column="1"></TextBlock>
<TextBlock Name="MListTemp" Text="{Binding Temperature}" HorizontalAlignment="Stretch" Margin="0,0,12,0" Grid.Column="2"></TextBlock>
<TextBlock x:Name="MListEntryControl" Grid.Column="3" FontFamily="Segoe MDL2 Assets" FontSize="22" Text=""></TextBlock>
<Button Click="DeleteMovement_Click" Tag="{Binding MovementId}" Grid.Column="4" HorizontalAlignment="Center">
<TextBlock Text="" FontFamily="Segoe MDL2 Assets" FontSize="22"></TextBlock>
</Button>
</Grid>
</DataTemplate>
</ListView.ItemTemplate>
<ListView.ItemContainerStyle>
<Style TargetType="ListViewItem">
<Setter Property="HorizontalContentAlignment" Value="Stretch" />
<Setter Property="Background" Value="#E0E4CC"/>
</Style>
</ListView.ItemContainerStyle>
</ListView>
UWP Change text inside a listview in XAML using binded boolean property
对于您的场景,我认为 XamlBehaviors package is suite for you and may be easier. When the binding data updated can trigger a ChangePropertyAction
. You can reference the DataTrigger
sample here 的 DataTrigger
。
例如布尔值属性命名为"trueorfalse",代码示例如下:
<TextBlock
x:Name="MListEntryControl"
Grid.Column="3"
FontSize="22"
Text="">
<Interactivity:Interaction.Behaviors>
<Interactions:DataTriggerBehavior
Binding="{Binding trueorfalse}"
Value="true" ComparisonCondition="Equal">
<Interactions:ChangePropertyAction
PropertyName="FontFamily"
TargetObject="{Binding ElementName=MListEntryControl}"
Value="Segoe MDL2 Assets" />
</Interactions:DataTriggerBehavior>
<Interactions:DataTriggerBehavior
Binding="{Binding trueorfalse}"
Value="false" ComparisonCondition="Equal">
<Interactions:ChangePropertyAction
PropertyName="FontFamily"
TargetObject="{Binding ElementName=MListEntryControl}"
Value="Yu Gothic UI" />
</Interactions:DataTriggerBehavior>
</Interactivity:Interaction.Behaviors>
</TextBlock>