이것은 바보 같은 질문 일 수 있습니다. 그러나 그 답변을 얻으려면 몇 시간 씩 조사하고 있습니다.C# wpf 그려진 사각형이있는 캔바스를 새로 고침
일부 사각형이있는 메인 윈도우에 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>
내 C# 코드는 그
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
this.DataContext = this;
}
public int Länge { get; set; } = 50;
public void button_Click(object sender, RoutedEventArgs e)
{
int Length = Convert.ToInt32(textBox.Text);
Länge = Length;
IV.InvalidateVisual();
IV.InvalidateMeasure();
IV.UpdateLayout();
Action emptyDelegate = delegate { };
IV.Dispatcher.Invoke(emptyDelegate, DispatcherPriority.Render);
MessageBox.Show(Convert.ToString(Länge));
}
}
변수 'Länge'를 선언 할 때 시작 값을 수정하면 사각형이 지정된 너비를 사용합니다. 그러나 버튼을 통한 업데이트는 messagebox를 제외하고는 아무 것도하지 않습니다. 보시다시피, Dispatcher.Invoke 또는 canvas.InvalidateVisual() 등의 일부 해결 방법을 시도했지만 그 중 아무 것도 작동하지 않습니다. 죄송합니다. C#을 처음 사용하면서 배우십시오.
[이 답변보기] (http://stackoverflow.com/a/13956932/5615980) – Ron