用滑块改变一个点的位置?

时间:2014-01-27 14:26:04

标签: c# wpf xaml slider wpf-controls

我是初学者,我的wpf项目有问题。 如何通过拖动滑块来更改点的位置? 我试图使用它,但它不起作用

<Grid Name="myGrid">
    <Line Name="Sa"/>
    <Line Name="Sb"/>
    <Line Name="Oa"/>
    <Line Name="Ob"/>
    <Slider Name="Slid1" Margin="78,51,1002,332" IsDirectionReversed="False" IsMoveToPointEnabled="False" Maximum="100" Minimum="-100" IsEnabled="True" />
</Grid>

这些代码背后:

InitializeComponent();
Sa = new Line();
Sa.Stroke = System.Windows.Media.Brushes.Black;
Sa.X1 = Slid1.Value;
Sa.X2 = window.Width / 2;
Sa.Y1 = (window.Height) / 2;
Sa.Y2 = window.Height / 2 -50;

3 个答案:

答案 0 :(得分:0)

问题是您将Sa.X1指定为Slid1.Value作为编译时常量值。 您必须为slider.ValueChanged事件实现一个侦听器来刷新值。

应该看起来像:

  

Slider.ValueChanged + = new Eventlistener(RefreshPosition)

  

RefreshPosition(object sender,ValueChangedEventargs args)   {   Sa.X1 = sender.value;   }

//如果这不能编译,你需要将发送者转换为滑块..(例如'发送者作为滑块')

整个建议只是伪代码。您还可能希望使用属性封装Sa.X1 ..

编辑:更正了事件名称(感谢XAMIMAX)

答案 1 :(得分:0)

如果您想使用后面的代码,请使用下面的代码

Sa.X1 = Slid1.Value;
Sa.X2 = window.Width / 2;
Sa.Y1 = (window.Height) / 2;
Sa.Y2 = window.Height / 2 -50;

Slider.ValueChanged的事件处理程序中: - )

答案 2 :(得分:0)

试试这个:

public MainWindow()
{
    InitializeComponent();

    Sa.Stroke = System.Windows.Media.Brushes.Black;
    Slid1.ValueChanged += Slid1_ValueChanged;           
}

void Slid1_ValueChanged(object sender, RoutedPropertyChangedEventArgs<double> e)
{            
    Sa.X1 = slider.Value;
    Sa.X2 = window.Width / 2;
    Sa.Y1 = (window.Height) / 2;
    Sa.Y2 = window.Height / 2 - 50;
}

如果你这样做

Sa = new Line();

您正在创建一个新的Line实例。这仅在java中需要自己做。在C#中,所有这些都是由应用程序本身完成的。