• 27.04.2024, 13:11
  • Registrieren
  • Anmelden
  • Sie sind nicht angemeldet.

 

Sensorwerte Runden in yaml

Dienstag, 31. Oktober 2023, 12:25

Wie kann ich die Sensorwerte in einem Benutzerdefinierten Objekt runden? Das Objekt ist mit einem Sensor aus dem Playground verknüft und zeigt 1 Nachkommastelle, ich möchte nun auf 0 nackommastellen "Runden". Hier mein bisheriger Code:
<UserControl
x:Name="this"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
mc:Ignorable="d" d:DesignHeight="300" d:DesignWidth="300">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="0.66*"/>
<ColumnDefinition Width="0.33*"/>
</Grid.ColumnDefinitions>
<TextBlock
Margin="0,0,0,3"
Text="Power"
FontSize="14" HorizontalAlignment="Left" VerticalAlignment="Center" FontFamily="Comic Sans MS"/>
<TextBlock
Grid.Column="1" Margin="0,0,0,3" FontSize="14" FontFamily="Comic Sans MS"
HorizontalAlignment="Right" VerticalAlignment="Center">
<TextBlock.Text>
<MultiBinding Converter="{StaticResource UnitConverter}" ConverterParameter="1">
<Binding ElementName="this" Path="DataContext.Data"/>
<Binding ElementName="this" Path="DataContext.Data.v"/>
</MultiBinding>
</TextBlock.Text>
</TextBlock>
<Rectangle VerticalAlignment="Bottom" Height="0" Grid.ColumnSpan="2" Fill="White" Opacity="0.15"/>
</Grid>
</UserControl>

Dienstag, 31. Oktober 2023, 13:21

Versuche es mal so:

Zitat

<UserControl
x:Name="this"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
mc:Ignorable="d" d:DesignHeight="300" d:DesignWidth="300">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="0.66*"/>
<ColumnDefinition Width="0.33*"/>
</Grid.ColumnDefinitions>
<TextBlock
Margin="0,0,0,3"
Text="Power"
FontSize="14" HorizontalAlignment="Left" VerticalAlignment="Center" FontFamily="Comic Sans MS"/>
<TextBlock
Text="{Binding ElementName=this, Path=DataContext.Value, StringFormat={}{0:F0}, FallbackValue=nix da}"
Grid.Column="1"
FontSize="14"
FontFamily="Comic Sans MS"
FontWeight="Normal"
Margin="0,0,0,3"
HorizontalAlignment="Center"
VerticalAlignment="Center"/>
<Rectangle VerticalAlignment="Bottom" Height="0" Grid.ColumnSpan="2" Fill="White" Opacity="0.15"/>
</Grid>
</UserControl>

Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von »Peter von Frosta« (31. Oktober 2023, 13:29)

Dienstag, 31. Oktober 2023, 15:28

Hm, das funktioniert an sich, allerdings fehlt dann die Einheit hinten dran.

Dienstag, 31. Oktober 2023, 15:44

Dann musst Du die noch mit einem weiteren TextBlock hinten dran hängen.
Runden kann man nur Zahlen...

Dienstag, 31. Oktober 2023, 15:54

klappt nicht so recht. kann man bei "StringFormat" die Einheit mit reinpacken?
Von Python o.ä. kenn ich das so, da kann man meist das Zahlenformat definieren und Pre- oder Suffixe mit dran packen.

Dienstag, 31. Oktober 2023, 16:00

Ok, jetzt hat es durch probieren geklappt. Habe jetzt das hier benutzt:

StringFormat='{}{0:F0} W'
Danke für die Hilfe :thumbsup:

Dienstag, 31. Oktober 2023, 16:02

Kannst Du sogar in die gleiche Zelle schreiben wie den Wert, musst nur beim Wert etwas "Margin rechts" hinzufügen

Zitat

<UserControl
x:Name="this"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
mc:Ignorable="d" d:DesignHeight="300" d:DesignWidth="300">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="0.66*"/>
<ColumnDefinition Width="0.33*"/>

</Grid.ColumnDefinitions>
<TextBlock
Margin="0,0,0,3"
Text="Power"
FontSize="14" HorizontalAlignment="Left" VerticalAlignment="Center" FontFamily="Comic Sans MS"/>

<TextBlock
Text="{Binding ElementName=this, Path=DataContext.Value, StringFormat={}{0:F0}, FallbackValue=nix da}"
Grid.Column="1"
FontSize="14"
FontFamily="Comic Sans MS"
FontWeight="Normal"
Margin="0,0,20,3"
HorizontalAlignment="right"
VerticalAlignment="Center"/>


<TextBlock
Grid.Column="1"
Text="W"
Margin="0,0,0,3"
FontSize="14" HorizontalAlignment="Right" VerticalAlignment="Center" FontFamily="Comic Sans MS"/>


<Rectangle VerticalAlignment="Bottom" Height="0" Grid.ColumnSpan="2" Fill="White" Opacity="0.15"/>
</Grid>
</UserControl>

Dienstag, 31. Oktober 2023, 16:03

Ok, jetzt hat es durch probieren geklappt. Habe jetzt das hier benutzt:

StringFormat='{}{0:F0} W'
Danke für die Hilfe :thumbsup:
Das geht auch (ich war zu langsam :rolleyes: )