2

一部のデータを TextBlock にバインドしようとしています。TextBlock はスライダー バーの値を表示するためのもので、スライダー バーの値が変更されたときに、TextBlock のテキストの色を赤に変更したいと考えています。

私のXAMLは次のようなものです:

<Grid Height="227">
    <TextBlock Margin="114,60,112,150" Name="textBlock1" Text="{Binding Path=DispVal}" Width="42" Grid.Column="1" HorizontalAlignment="Center" TextAlignment="Center" FontWeight="Bold">
        <TextBlock.Style>
            <Style TargetType="{x:Type TextBlock}"> 
                <Setter Property="Foreground" Value="Black"/>

                <Style.Triggers> 
                    <DataTrigger Binding="{Binding Path=IsChanged}" Value="true"> 
                        <Setter Property="TextBlock.Foreground" Value="Red" /> 
                    </DataTrigger> 
                    <DataTrigger Binding="{Binding Path=IsChanged}" Value="false"> 
                        <Setter Property="TextBlock.Foreground" Value="Black" /> 
                    </DataTrigger> 
                </Style.Triggers> 
            </Style> 
        </TextBlock.Style>            
    </TextBlock> 
</Grid>

DataContext を使用して TextBlock をバインドしました。

texBlock1.DataContext = m_slider;

スライダー バーの更新ハンドラーが起動すると、m_slider オブジェクトを更新します。

ただし、テキストや色の変更はありません。

4

1 に答える 1

0

次のプロパティを適用することで、テキストブロックをテキストボックスに置き換えて、ルックアンドフィールを同じにすることができます。

<Setter Property="IsReadOnly" Value="True"/>
<Setter Property="Background" Value="Transparent"/>
<Setter Property="BorderThickness" Value="0"/>

次に、TextChangedイベントを使用して、バインディングによってテキストが変更されるたびにそのスタイルを更新できます。

于 2013-01-17T16:24:43.963 に答える