C# UWP使用绑定布尔属性在XAML中更改listview中的文本

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"

我有一个包含网格和元素的列表视图。一个是textblock,如果Bind属性为true,我想显示一个Segoe MDL2图标,如果为false,则显示另一个图标(名为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="&#xE107;" 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="&#xE107;">        
   <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”