2017-04-18 2 views
0

Ich habe eine Listview mit einem Raster und Elemente innerhalb. Einer ist ein Textblock und ich möchte ein Segoe MDL2 Icon zeigen, wenn die binded Eigenschaft wahr ist, oder eine andere wenn es falsch ist (MListEntryControl). Alle Beispiele, die ich gelesen habe, sind für vor-UWP oder haben nicht gut verstanden, wie visuelle Statustrigger für dieses spezielle Bedürfnis von Nutzen sein können. Vielen Dank.UWP Ändern Sie Text in einem Listview in XAML mit binded booleschen Eigenschaft

<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> 

Antwort

1

UWP ändern Text in einem Listview in XAML boolean Eigenschaft binded Verwendung

Für Ihr Szenario, ich denke, die DataTrigger von XamlBehaviors Paket-Suite für Sie ist und kann einfacher sein. Wenn die Bindungsdaten aktualisiert werden, kann ein ChangePropertyAction ausgelöst werden. Sie können auf die DataTrigger Probe here verweisen.

Zum Beispiel, wenn die Boolesche Eigenschaft mit dem Namen "trueorfalse", Codebeispiel wie folgt:

<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> 
+0

funktioniert perfekt. Um es für zukünftige Referenzen ein wenig vollständiger zu machen: Importieren von Verhaltensweisen aus der Package Manager-Konsole Installieren Sie das Paket Microsoft.Xaml.Behaviors.Uwp.Managed und fügen Sie dies der .xaml xmlns hinzu: Interactivity = "using: Microsoft.Xaml. Interaktivität "xmlns: Interactions =" ​​mit: Microsoft.Xaml.Interactions.Core " –

Verwandte Themen