相关疑难解决方法(0)

在WPF中使用MVVM将n个矩形添加到画布

我想在我的mvvm应用程序的主窗口中添加一组矩形.在我的viewModel中,我有一个对象集合,我用转换器转换为System.Windows.Shapes.Rectangle类(代码如下):

视图模型:

RecognizedValueViewModel 
{
    public ObservableCollection<BarcodeElement> BarcodeElements
    {
        get { return _BarcodeElements; }
        set { _BarcodeElements = value; }
    }

    public RecognizedValueViewModel()
    {
        BarcodeElements = InitializeBarcodeElements();
    }
}
Run Code Online (Sandbox Code Playgroud)

转换器:

public BarcodeElementToRectangleConverter : IValueConverter
{
    public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
    {
        Rectangle barcodeRectangle = GetRectangleFromBarcodeElement(value as BarcodeElement);

        return barcodeRectangle;
    }
}
Run Code Online (Sandbox Code Playgroud)

矩形应显示在MainWindow的画布中:

<Canvas x:Name="Canvas_Image_Main">
    <!-- Show rectangles here -->
</Canvas>
Run Code Online (Sandbox Code Playgroud)

我会在代码中将Rectangles添加到canvas中,但我现在还没有在运行时有多少个矩形.我有办法实现这个目标吗?保护你.

c# wpf user-interface canvas mvvm

17
推荐指数
2
解决办法
2万
查看次数

创建时将形状信息添加到 ListView

我在画布中创建形状(矩形、椭圆、线条)。然后我在另一个窗口中有一个列表视图,我需要在其中输入形状的信息(例如位置、大小、它是什么形状)。

我在另一个窗口中的 XAML 中有此代码:

    <ListView Name="Information">

        <ListView.View>
            <GridView>
                <GridViewColumn Header="Type"/>
                <GridViewColumn Header="PositionX"/>
                <GridViewColumn Header="PositionY"/>
                <GridViewColumn Header="Width" DisplayMemberBinding="{Binding ActualWidth}"/>
                <GridViewColumn Header="Height" DisplayMemberBinding="{Binding ActualHeight}"/>
            </GridView>
        </ListView.View>

    </ListView>
Run Code Online (Sandbox Code Playgroud)

在主窗口的 c# 中,我有一个可观察的集合和以下代码:

ObservableCollection<Shape> shapes = new ObservableCollection<Shape>();

myRect.Width = var1;
myRect.Height = var2;
Page.Children.Add(myRect);
Canvas.SetLeft(myRect, posx);
Canvas.SetTop(myRect, posy);

shapes.Add(myRect);
2ndwindow.Information.ItemsSource = shapes; // this is working because the 2ndwindow is owned by the mainwindow
Run Code Online (Sandbox Code Playgroud)

编辑:我设法绑定了宽度和高度,但我不知道如何绑定它的位置和形状(矩形或椭圆)

c# wpf

2
推荐指数
1
解决办法
459
查看次数

标签 统计

c# ×2

wpf ×2

canvas ×1

mvvm ×1

user-interface ×1