Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/268.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
c#wpf使用绘制的矩形刷新画布_C#_Wpf_Canvas_Refresh_Rectangles - Fatal编程技术网

c#wpf使用绘制的矩形刷新画布

c#wpf使用绘制的矩形刷新画布,c#,wpf,canvas,refresh,rectangles,C#,Wpf,Canvas,Refresh,Rectangles,这对你来说可能是个愚蠢的问题,但我已经寻找了几个小时来得到答案 我的主窗口中有一块画布,上面有一些矩形。通过一个文本框和一个按钮,我想修改矩形(和画布)的宽度 这是我的wpf代码: <Canvas Name="IV" Width="{Binding Path=Länge}" Height="280" VerticalAlignment="Top" Margin="443,22,443.5,0"> <Rectangle Canvas.Left="0" Canvas

这对你来说可能是个愚蠢的问题,但我已经寻找了几个小时来得到答案

我的主窗口中有一块画布,上面有一些矩形。通过一个文本框和一个按钮,我想修改矩形(和画布)的宽度

这是我的wpf代码:

<Canvas Name="IV" Width="{Binding Path=Länge}" Height="280" VerticalAlignment="Top" Margin="443,22,443.5,0">
        <Rectangle Canvas.Left="0" Canvas.Top="157.5" Width="{Binding Path=Länge}" Height="136" Name="rect3704" Fill="#FF999999" StrokeThickness="0.26458332"/>
        <Rectangle Canvas.Left="0" Canvas.Top="20.5" Width="{Binding Path=Länge}" Height="136" Name="rect37047" Fill="#FF999999" StrokeThickness="0.26458332"/>
        <Rectangle Canvas.Left="0" Canvas.Top="294.5" Width="{Binding Path=Länge}" Height="2.5" Name="rect3721" Fill="#FF999999" StrokeThickness="0.26458332"/>
        <Rectangle Canvas.Left="0" Canvas.Top="17" Width="{Binding Path=Länge}" Height="2.5" Name="rect37217" Fill="#FF999999" StrokeThickness="0.26458332"/>
        <Rectangle Canvas.Left="0" Canvas.Top="293.5" Width="{Binding Path=Länge}" Height="1" Name="rect3738" Fill="#FF333333" StrokeThickness="0.26458332"/>
        <Rectangle Canvas.Left="0" Canvas.Top="156.5" Width="{Binding Path=Länge}" Height="1" Name="rect37386" Fill="#FF333333" StrokeThickness="0.26458332"/>
        <Rectangle Canvas.Left="0" Canvas.Top="19.5" Width="{Binding Path=Länge}" Height="1" Name="rect373867" Fill="#FF333333" StrokeThickness="0.26458332"/>
    </Canvas>
如果修改声明变量“Länge”的起始值,则矩形将采用指定的宽度。但是“通过更新”按钮除了messagebox之外什么都不做。如您所见,我尝试了一些解决方案,如Dispatcher.Invoke或canvas.InvalidateVisual()等,但都不起作用。。 对不起,刚到C#,只在实践中学习

使用a,它应该可以工作:

    public int Länge
    {
        get { return (int)GetValue(LängeProperty); }
        set { SetValue(LängeProperty, value); }
    }
    public static readonly DependencyProperty LängeProperty =
      DependencyProperty.Register(
      "Länge ", typeof(int), typeof(MainWindow), new PropertyMetadata(50));
没有必要使措施或其他内容无效:

public void button_Click(object sender, RoutedEventArgs e)
{
    int Length = Convert.ToInt32(textBox.Text);
    Länge = Length;
    MessageBox.Show(Convert.ToString(Länge));
}
另外,请注意,您应该将Binding ElementName设置为当前控件还是设置正确的DataContext。大概是这样的:

Width="{Binding ElementName=window, Path=Länge}"
其中“window”是MainWindow.Xaml中的主窗口名称

Width="{Binding ElementName=window, Path=Länge}"