|
Hi Karl,
Thanks for reply
but i have some other problems occur when i place in viewBox or Grid, it is a Vector editing Application that have 2 type selection, first one is Direct Selection that helps for Standard resizing(Height and Width) next is Node selection that helps for Node editing (Drag and change the polygon points using a Adorner Thumb), when i place the polygon in a viewbox i cant do Node Editing, so please check this sample and give a reply
Thanks
Vineeth
<Window x:Class="SampleApplication.Window1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="Sample" Height="600" Width="922" WindowState="Maximized" Loaded="Window_Loaded">
<Grid>
<Canvas Name="myCanvas" Background="AliceBlue">
<Polygon Name="polygonFill" Stretch="Fill" Points="177,177 0,177 88.5,0" Fill="Transparent" Stroke="Black" StrokeThickness="2" Canvas.Left="100" Canvas.Top="100"
Height="{Binding ElementName=sliderStretchFill,Path=Value}"
/>
<Slider Name="sliderStretchFill" Width="150" Height="22" Canvas.Left="112" Canvas.Top="35" Minimum="10" Maximum="200" Value="100" />
<Label Canvas.Left="100" Canvas.Top="66" Height="28" Name="lblStretchFill" Width="77">Stretch="Fill"</Label>
<Label Canvas.Left="175" Canvas.Top="66" >Height=</Label>
<Label Canvas.Left="215" Canvas.Top="66" Height="28" Name="lblStretchHeight" Width="29" Content="{Binding ElementName=sliderStretchFill,Path=Value}"/>
<Polygon Name="polygonNone" Stretch="None" Points="177,177 0,177 88.5,0" Fill="Transparent" Stroke="Black" StrokeThickness="2" Canvas.Left="700" Canvas.Top="100"
Height="{Binding ElementName=sliderStretchNone,Path=Value}"
/>
<Slider Name="sliderStretchNone" Width="150" Height="22" Canvas.Left="712" Canvas.Top="35" Minimum="10" Maximum="200" Value="100" />
<Label Canvas.Left="700" Canvas.Top="66" Height="28" Name="lblStretchNone" Width="91">Stretch="None"</Label>
<Label Canvas.Left="785" Canvas.Top="66" >Height=</Label>
<Label Canvas.Left="825" Canvas.Top="66" Height="28" Name="lblStretchNoneHeight" Width="29" Content="{Binding ElementName=sliderStretchNone,Path=Value}"/>
</Canvas>
</Grid>
</Window>
namespace SampleApplication
{
public partial class Window1 : Window
{
public Window1()
{
InitializeComponent();
}
Selection selection;
AdornerLayer adornerLayer;
void AddAdornerLayerToPolygonFill()
{
adornerLayer = AdornerLayer.GetAdornerLayer(polygonFill);
selection = new Selection(polygonFill);
adornerLayer.Add(selection);
}
void AddAdornerLayerToPolygonNone()
{
adornerLayer = AdornerLayer.GetAdornerLayer(polygonNone);
selection = new Selection(polygonNone);
adornerLayer.Add(selection);
}
private void Window_Loaded(object sender, RoutedEventArgs e)
{
AddAdornerLayerToPolygonFill();
AddAdornerLayerToPolygonNone();
}
}
}
namespace SampleApplication
{
class Selection : Adorner
{
VisualCollection visualChildren;
Polygon polygon;
Point point;
ArrayList thumbArrray = new ArrayList();
Thumb thumb;
public Selection(UIElement adornedElement)
: base(adornedElement)
{
visualChildren = new VisualCollection(this);
polygon = (Polygon)adornedElement;
for (int i = 0; i < polygon.Points.Count; i++)
{
point = polygon.Points[i];
thumb = new Thumb();
BuildCorner(ref thumb, Cursors.SizeNESW);
thumb.Tag = i;
thumb.DragDelta += new DragDeltaEventHandler(thumb_DragDelta);
thumbArrray.Add(thumb);
}
}
void thumb_DragDelta(object sender, DragDeltaEventArgs e)
{
FrameworkElement adornedElement = this.AdornedElement as FrameworkElement;
polygon = (Polygon)adornedElement;
thumb = (Thumb)sender;
point = polygon.Points[(int)thumb.Tag];
point.X += e.HorizontalChange;
point.Y += e.VerticalChange;
polygon.Points[(int)thumb.Tag] = point;
adornedElement = polygon;
InvalidateArrange();
}
void BuildCorner(ref Thumb cornerThumb, Cursor customizedCursor)
{
cornerThumb = new Thumb();
cornerThumb.Height = cornerThumb.Width = 10;
cornerThumb.Background = Brushes.Black;
cornerThumb.Cursor = customizedCursor;
cornerThumb.Opacity = 0.80;
visualChildren.Add(cornerThumb);
}
protected override Size ArrangeOverride(Size finalSize)
{
FrameworkElement adornedElement = this.AdornedElement as FrameworkElement;
polygon = (Polygon)adornedElement;
for (int i = 0; i < polygon.Points.Count; i++)
{
point = polygon.Points[i];
thumb = (Thumb)thumbArrray[i];
thumb.Arrange(new Rect(point.X - 5, point.Y - 5, 10, 10));
}
return finalSize;
}
protected override Visual GetVisualChild(int index) { return visualChildren[index]; }
protected override int VisualChildrenCount { get { return visualChildren.Count; } }
}
}
|
|
|
|
|
I don't get what the problem is.
If you want the poly to maintain shape, shouldn't you have to change the height and width together?
When I changed the height, I got the expected behavior.
Sorry I'm not understanding.
modified 27-Feb-21 21:01pm.
|
|
|
|
|
Hi,
thanks for your reply
First change the height then change each point using adorner Thumb that added to the shape to reproduce the issue
Thanks
|
|
|
|
|
Hi
I am working on WPF and I need to place a Datagrid in this page for displaying the table data. But I found that in WPF we will not have Datagrid. But how can I do this.
If anyone have any idea to get the datagrid in WPF, please reply me.
Thanks in advance.
|
|
|
|
|
There a microsoft one on Codeplex or a free one from Xceed
|
|
|
|
|
Hi , there are many ways to do it
a) You can get one from codeplex
b) Infragistics control [ I am using this in my current project ]
c) You can use a List box in place of a grid.
d) Make google search for more information
Hope this helps
Niladri Biswas
|
|
|
|
|
I was wondering if anyone knew how I can give the user the ability to move an image element. Basically, I want to be able to allow the user to drag the image over a listbox and have a drop effect. Below is my xaml code:
<StackPanel Grid.Row="0">
<Border CornerRadius="4" Background="LightYellow" BorderBrush="Black" BorderThickness="2">
<Label x:Name="location" HorizontalAlignment="Center" Height="30" FontSize="12" VerticalAlignment="Center">Person Information</Label>
</Border>
<Image Width="150" Height="150" Margin="5" PreviewMouseLeftButtonDown="gridImage_PreviewMouseLeftButtonDown" PreviewMouseMove="gridImage_PreviewMouseMove" x:Name="gridImage" >
Image.RenderTransform>
<TranslateTransform x:Name="imgTranslate" X="0" Y="0" />
</Image.RenderTransform>
</Image>
</StackPanel>
I'm currently using the PreviewMouseLeftButton and PreviewMouseMove buttons to create a drop effect and this works fine; but I would like to make it more animated to where the user is actually dragging the image. Thanks.
Terrance C.
modified on Wednesday, June 3, 2009 11:37 AM
|
|
|
|
|
Check out Josh Smith's article on WPF Drag & Drop here on Code Project.
modified 27-Feb-21 21:01pm.
|
|
|
|
|
Thanks, for the information.
Terrance C.
|
|
|
|
|
Hi All,
I've recently been having bags of fun getting an app working on 32bit and 64bit windows. Since I don't have access to a 64bit machine getting a grip on the issues has been a complete nightmare. So I've opted to build the app specifically for x86 and run the app in WOW mode on 64bit machines. All good. I have had positive feedback on this having been successful and the app is running on 64bit.
However, a couple of thge 64bit testers have said they have noticed a fair dip in UI performance. None of the codebase has changed between the version they previously ran and this new x86 compiled version.
Has anyone else seen this with an x86 compiled app running in WOW mode on 64bit machines?
Cheers,
|
|
|
|
|
Hi
Does anyOne know how to style scrollbar of wpf datagrid. I saw articles styling scrollbars in general, but I don't know how to do it for wpf datagrid.
Thanks,
Vsaratkar
|
|
|
|
|
You essentially need to start out with the existing datagrid template and change the scrollbar to your liking, creating a new template along the way.
"Why don't you tie a kerosene-soaked rag around your ankles so the ants won't climb up and eat your candy ass..." - Dale Earnhardt, 1997 ----- "...the staggering layers of obscenity in your statement make it a work of art on so many levels." - Jason Jystad, 10/26/2001
|
|
|
|
|
|
If you don't want to copy the entire DataGrid template, the scrollbars
are named "PART_HorizontalScrollBar" and "PART_VerticalScrollBar"...you
could find those controls at runtime and set their style/template appropriately.
Mark Salsbery
Microsoft MVP - Visual C++
|
|
|
|
|
You can also take a scrollbar template like the example at
ScrollBar ControlTemplate Example[^] and put it
right in the DataGrid's resources (or any place in the resources "above" the datagrid.
If the style doesn't have a key then the DataGrid will automagically use it on its
scrollbars.
Mark Salsbery
Microsoft MVP - Visual C++
|
|
|
|
|
I was just going to say that, scroll bars are a great candidate for a typed style rather than x:key="" type. Nice and consistent.
|
|
|
|
|
Thanks Mark,
I achieved what I was looking for.
|
|
|
|
|
Hi,
What's a good method to bind Commands to Events? In my WPF app, there are events that I'd like to capture and process by my ViewModel but I'm not sure how. Things like losing focus, mouseover, mousemove, etc. Since I'm trying to adhere to the MVVM pattern, I'm wondering if there's a XAML solution for that.
Thanks!
|
|
|
|
|
These events are, strictly speaking, view only events, so why would you want them to be handled in the VM? There's no rule that says you can't have code behind the view, so if you need to do things, you can do it there. What are you trying to do that goes beyond the V/VM separation?
"WPF has many lovers. It's a veritable porn star!" - Josh Smith As Braveheart once said, "You can take our freedom but you'll never take our Hobnobs!" - Martin Hughes.
My blog | My articles | MoXAML PowerToys | Onyx
|
|
|
|
|
Hi Pete,
Those events were just examples. It can be any type of event that I might need to handle.
In our application we can change XAML files dynamically, so we're trying to avoid solutions that involve code-behind files.
Thanks!
|
|
|
|
|
|
Attached behaviours are a good way to go - and one I'm particularly fond of (see this[^] blog post for an example).
"WPF has many lovers. It's a veritable porn star!" - Josh Smith As Braveheart once said, "You can take our freedom but you'll never take our Hobnobs!" - Martin Hughes.
My blog | My articles | MoXAML PowerToys | Onyx
|
|
|
|
|
I don't know your actual requirement but ICommand can be helpful in such situations.
It makes your view cleaner.
May I get the exact scenario for the problem?
Niladri Biswas
modified on Thursday, June 4, 2009 10:32 AM
|
|
|
|
|
I suspect you meant to raise this against the OP, not me. He won't be notified of posts against my account, so could you reply to him instead.
"WPF has many lovers. It's a veritable porn star!" - Josh Smith As Braveheart once said, "You can take our freedom but you'll never take our Hobnobs!" - Martin Hughes.
My blog | My articles | MoXAML PowerToys | Onyx
|
|
|
|
|
I don't know your actual requirement but ICommand can be helpful in such situations.
It makes your view cleaner.
May I get the exact scenario for the problem?
Niladri Biswas
|
|
|
|