C# UWP使用绑定布尔属性在XAML中更改listview中的文本
我有一个包含网格和元素的列表视图。一个是textblock,如果Bind属性为true,我想显示一个Segoe MDL2图标,如果为false,则显示另一个图标(名为MListEntryControl)。我读过的所有示例都是针对UWP之前的,或者我不太了解visualstatetriggers如何用于这一特殊需求。多谢各位C# UWP使用绑定布尔属性在XAML中更改listview中的文本,c#,data-binding,uwp-xaml,C#,Data Binding,Uwp Xaml,我有一个包含网格和元素的列表视图。一个是textblock,如果Bind属性为true,我想显示一个Segoe MDL2图标,如果为false,则显示另一个图标(名为MListEntryControl)。我读过的所有示例都是针对UWP之前的,或者我不太了解visualstatetriggers如何用于这一特殊需求。多谢各位 <ListView x:Name="MovementsList" Grid.Row="3" Grid.ColumnSpan="3" Margin="0,12,0,0"
<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使用绑定布尔属性在XAML中更改listview中的文本
对于您的场景,我认为包的DataTrigger
非常适合您,可能会更简单。当绑定数据更新时,会触发ChangePropertyAction
。您可以参考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>
工作正常。为了使其更完整,以备将来参考:从Package Manager控制台导入行为,请安装包Microsoft.Xaml.behavies.Uwp.Managed并将其添加到.Xaml xmlns:Interactivity=“using:Microsoft.Xaml.Interactivity”xmlns:interactiviations=“using:Microsoft.Xaml.interactiviations.Core”