0
問題があります。 私は点の集合を設定するには、プロパティグリッドを使用しますが、プログラムは私にInvalidOperationExceptionがを与える:コレクションは...c#xceed PropertyGrid with System.Windows.Media.PointCollection
を変更されている私は、カスタムコンバータが、ノー結果を使用してみてください:(
私が間違って何をやっている
を?誰かが?その答えのために非常に多くの
おかげでこれを解決するための正しい手順を記述することができます。
私は、単純なPを書きましたこれは私のプロジェクトではありません(私のプロジェクトはトップシークレットです:))、それは同様のロジックで動作します。
XAML:
<Window x:Class="WpfApplication1.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:WpfApplication1"
xmlns:xctk="http://schemas.xceed.com/wpf/xaml/toolkit"
mc:Ignorable="d"
Title="MainWindow" Height="350" Width="600">
<Grid>
<xctk:PropertyGrid x:Name="workplace_property" ShowSearchBox="False" Background="WhiteSmoke" UpdateTextBoxSourceOnEnterKey="True" ShowAdvancedOptions="True" SnapsToDevicePixels="True" IsMiscCategoryLabelHidden="True" SelectedObject="{Binding}" HorizontalAlignment="Right" Width="251"/>
<Canvas Name="myCanvas" Margin="0">
</Canvas>
</Grid>
</Window>
CS:
using System;
using System.Windows;
using System.Windows.Media;
using System.Windows.Shapes;
using Xceed.Wpf.Toolkit.PropertyGrid.Attributes;
namespace WpfApplication1
{
public partial class MainWindow : Window
{
public Polyline drawobj;
public MainWindow()
{
InitializeComponent();
drawobj = new Polyline();
drawobj.Points = new PointCollection() { new Point(10, 20), new Point(40, 20), new Point(150, 150) };
drawobj.StrokeThickness = 2;
drawobj.Stroke = new SolidColorBrush(Colors.Black);
myCanvas.Children.Add(drawobj);
workplace_property.SelectedObject = new polyline_property(drawobj);
}
}
public class polyline_property
{
private Polyline drawobj;
public polyline_property(Polyline obj)
{
drawobj = obj;
}
public PointCollection Points
{
get
{
return drawobj.Points;
}
set
{
drawobj.Points = value;
}
}
public Color Color
{
get
{
return ((SolidColorBrush)drawobj.Stroke).Color;
}
set
{
((SolidColorBrush)drawobj.Stroke).Color = value;
}
}
public Double StrokeThickness
{
get
{
return drawobj.StrokeThickness;
}
set
{
drawobj.StrokeThickness = value;
}
}
public DoubleCollection StrokeDashArray
{
get
{
return drawobj.StrokeDashArray;
}
set
{
drawobj.StrokeDashArray = value;
}
}
public PenLineCap StrokeDashCap
{
get
{
return drawobj.StrokeDashCap;
}
set
{
drawobj.StrokeDashCap = value;
}
}
public Double StrokeDashOffset
{
get
{
return drawobj.StrokeDashOffset;
}
set
{
drawobj.StrokeDashOffset = value;
}
}
}
}