- Details
- Written by: Stanko Milosev
- Category: WPF
- Hits: 4237
All you need is one XAML and two text boxes. So here goes XAML:
<Window x:Class="WpfApplication3.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Title="MainWindow" Height="350" Width="525"> <Grid> <TextBox HorizontalAlignment="Left" Height="23" Margin="96,91,0,0" TextWrapping="Wrap" Text="{Binding Path=Text, ElementName=myTest}" VerticalAlignment="Top" Width="120"/> <TextBox HorizontalAlignment="Left" Height="23" Margin="120,200,0,0" TextWrapping="Wrap" Text="TextBox" VerticalAlignment="Top" Width="120" x:Name="myTest"/> </Grid> </Window>
- Details
- Written by: Stanko Milosev
- Category: WPF
- Hits: 3887
XAML:
<Window x:Class="WpfApplication2.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Title="MainWindow" Height="350" Width="525"> <Grid> <TextBox x:Name="t1" HorizontalAlignment="Left" Height="23" Margin="101,43,0,0" TextWrapping="Wrap" Text="TextBox" VerticalAlignment="Top" Width="120"/> <TextBox x:Name="t2" HorizontalAlignment="Left" Height="23" Margin="101,91,0,0" TextWrapping="Wrap" Text="TextBox" VerticalAlignment="Top" Width="120"/> </Grid> </Window>
Code:
public MainWindow() { InitializeComponent(); Binding binding = new Binding(); binding.Source = t1; binding.Path = new PropertyPath(TextBox.TextProperty); BindingOperations.SetBinding(t2, TextBox.TextProperty, binding); }
- Details
- Written by: Stanko Milosev
- Category: WPF
- Hits: 4173
First add a canvas:
Set width and height to auto:
Add a button.
Now comes a tricky part, at least for me, since I don't know how to delete margins from Visual Studio GUI, so I had to do it manually from XAML. So, here is my XAML:
<Window x:Class="DragNdrop.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Title="MainWindow" Height="350" Width="525"> <Grid> <Canvas Margin="20" HorizontalAlignment="Left" VerticalAlignment="Top"> <Button Content="Button" PreviewMouseLeftButtonDown="Button_PreviewMouseLeftButtonDown" PreviewMouseLeftButtonUp="Button_PreviewMouseLeftButtonUp" PreviewMouseMove="Button_PreviewMouseMove"/> </Canvas> </Grid> </Window>
Notice that margins from button node are deleted, and margin is equal 20 on canvas (Margin="20"), otherwise button will be away from mouse pointer.
Code looks like this:
public partial class MainWindow : Window { private double FirstXPos; private double FirstYPos; private double FirstArrowXPos; private double FirstArrowYPos; private object MovingObject; public MainWindow() { InitializeComponent(); } private void Button_PreviewMouseLeftButtonDown(object sender, MouseButtonEventArgs e) { FirstXPos = e.GetPosition(sender as Control).X; FirstYPos = e.GetPosition(sender as Control).Y; FirstArrowXPos = e.GetPosition((sender as Control).Parent as Control).X - FirstXPos - 20; FirstArrowYPos = e.GetPosition((sender as Control).Parent as Control).Y - FirstYPos - 20; MovingObject = sender; } private void Button_PreviewMouseLeftButtonUp(object sender, MouseButtonEventArgs e) { MovingObject = null; } private void Button_PreviewMouseMove(object sender, MouseEventArgs e) { if (e.LeftButton == MouseButtonState.Pressed && sender == MovingObject) { (sender as Control).SetValue(Canvas.LeftProperty, e.GetPosition((sender as Control).Parent as Control).X - FirstXPos - 20); (sender as Control).SetValue(Canvas.TopProperty, e.GetPosition((sender as Control).Parent as Control).Y - FirstYPos - 20); } } }
Code you can download from here, dirty as usual and made in VS 2013
- Details
- Written by: Stanko Milosev
- Category: WPF
- Hits: 3999
<Grid> <TextBox Height="194" HorizontalAlignment="Stretch" Name="textBox1" VerticalAlignment="Bottom" TextWrapping="Wrap" AcceptsReturn="True" /> </Grid>
Most important values are:
TextWrapping="Wrap"
and
AcceptsReturn="True"
Or in properties:
and