0

値が変化する巻物があり、刻々と変化する値を書きたいと思ってLabelいます。

私はこれを試しました:

<Window x:Class="WpfApplication16.Window1"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:my="clr-namespace:WpfApplication16"
    Title="Window1" Height="300" Width="300">
<Window.Resources>
    <my:ValueAngleConverter x:Key="valueAngleConverter"/>
    <my:ValueTextConverter x:Key="valueTextConverter"/>
</Window.Resources>
<Grid>
    <Slider Name="knob" SmallChange="1">
        <Slider.Template>
            <ControlTemplate>
                <Viewbox>
                    <Canvas Width="300" Height="300" Margin="5">
                        <Ellipse Fill="LightBlue" Width="300" Height="300" Canvas.Left="0" Canvas.Top="0" 
            Stroke="Black" StrokeThickness="10"
            MouseLeftButtonUp="Ellipse_MouseLeftButtonUp"
            MouseMove="Ellipse_MouseMove"/>
                        <Ellipse Fill="Black" Width="60" Height="60" Canvas.Left="120" Canvas.Top="120"/>
                        <Canvas>
                            <Line Stroke="Red" StrokeThickness="5" X1="150" Y1="30" X2="150" Y2="20"
            MouseLeftButtonUp="Ellipse_MouseLeftButtonUp" MouseLeftButtonDown="Ellipse_MouseLeftButtonDown"/>
                            <Canvas.RenderTransform>
                                <RotateTransform CenterX="150" CenterY="150">
                                    <RotateTransform.Angle>
                                        <MultiBinding Converter="{StaticResource valueAngleConverter}">
                                            <Binding RelativeSource="{RelativeSource TemplatedParent}" Path="Value"/>
                                            <Binding RelativeSource="{RelativeSource TemplatedParent}" Path="Minimum"/>
                                            <Binding RelativeSource="{RelativeSource TemplatedParent}" Path="Maximum"/>
                                        </MultiBinding>
                                    </RotateTransform.Angle>
                                </RotateTransform>
                            </Canvas.RenderTransform>
                        </Canvas>
                    </Canvas>
                </Viewbox>
            </ControlTemplate>
        </Slider.Template>
    </Slider>
    <Label Content="{Binding Value, ElementName=knob, UpdateSourceTrigger=PropertyChanged}" />
</Grid>

スライダー コンテンツの外観を楕円形のスライダーに変更しました (興味がある場合は、完全なコードを添付できます)。

しかし、私の問題は私のラベルにあります。スクロール値を変更すると変更したい。現在、最初の値が表示されていますが、スクロールがスタックされ (スクロールできません)、その値を変更することはできません。

スクロール値をラベルコンテンツにバインドするために私が間違っていることについて何か考えはありますか?

4

1 に答える 1

1

The following code works. The difference I see is that in binding you have not declared Path=Value, but I don't think this should matter.

<StackPanel>
    <Slider Name="knob" SmallChange="1"/>        
    <Label Content="{Binding ElementName=knob, Path=Value, UpdateSourceTrigger=PropertyChanged}"/>
</StackPanel>

The Template should be checked at the point where the Value is bound.

于 2013-01-18T11:59:23.297 に答える