WPF Nadpisanie wartości bindów w zależności od właściowści

WPF Nadpisanie wartości bindów w zależności od właściowści
M9
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 52
0

Binduje w ten sposób w viewmodelu:

Kopiuj
                    <TextBox>
                        <TextBox.Text>
                            <MultiBinding StringFormat=" {0}{1}" UpdateSourceTrigger="PropertyChanged">
                                <Binding Path="Value"/>
                                <Binding Path="Unit"/>
                            </MultiBinding>
                        </TextBox.Text>
                    </TextBox>

Czy da się w jakiś sposób np. poprzez zmiany w stylu wymusić zastąpienie wartości Text, kiedy ustawimy np. IsEnabled = false.
Zrobiłbym to oczywiście z viewmodelu, ale Value jest typu double.

SK
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 117
0

Możesz to zrobić np. trigger'em.

M9
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 52
0
cSharpKazik napisał(a):

Możesz to zrobić np. trigger'em.

Niestety nie nadpisuje wartości bindów :<

styl:

Kopiuj
            <Style TargetType="{x:Type TextBox}">
                <Setter Property="Width" Value="70"/>
                <Setter Property="Height" Value="40"/>
                <Setter Property="IsReadOnly" Value="True"/>

                <Setter Property="Padding" Value="0, 8"/>
                <Setter Property="TextAlignment" Value="Center"/>
                <Setter Property="BorderThickness" Value="0"/>

                <Setter Property="FontSize" Value="18"/>
                <Setter Property="Foreground" Value="{DynamicResource BrushDark}"/>

                <Setter Property="BorderThickness" Value="0"/>
                <Setter Property="Background" Value="{DynamicResource BackgroundBrush}"/>
                <Style.Triggers>
                    <Trigger Property="IsEnabled" Value="False">
                        <Setter Property="Text" Value="-"/>
                    </Trigger>
                    <Trigger Property="IsFocused" Value="True">
                        <Setter Property="Background" Value="{DynamicResource BackgroundBrushLight}"/>
                    </Trigger>
                </Style.Triggers>
            </Style>
SK
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 117
1

To może dodaj MultiValueConverter razem z właściwością która binduje IsEnabled i jeśli IsEnabled == False to zwracaj "-", a w przeciwnym wypadku $"{Value} {Unit}"

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.