0
그래서 뷰 박스 안에 그리드가 있습니다. 이제 그리드가 뷰 박스와 함께 확장됩니다. 그러나, 내 ViewModel에서 그리드의 높이와 너비를 알아야합니다. 그러나 높이를 아무것도 설정하지 않은 것처럼 보입니까? 내 뷰 모델에서ViewModel에 그리드의 높이/너비를 바인딩하려고 시도했습니다.
<Viewbox VerticalAlignment="Top" Margin="5,20,5,0">
<Border BorderThickness="6" BorderBrush="Black" CornerRadius="2">
<Grid MinHeight="300" MinWidth="400" Height="{Binding Height, Mode=TwoWay}" Width="{Binding Width, Mode=TwoWay}" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" Grid.Column="0" >
<ItemsControl ItemsSource="{Binding Viewers}">
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<Canvas />
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
<ItemsControl.ItemContainerStyle>
<Style>
<Setter Property="Canvas.Left" Value="{Binding X}" />
<Setter Property="Canvas.Top" Value="{Binding Y}"/>
</Style>
</ItemsControl.ItemContainerStyle>
</ItemsControl>
</Grid>
</Border>
</Viewbox>
그리고 :
private int _height;
public int Height
{
get
{
return _height;
}
set
{
_height = value;
OnPropertyChanged("Height");
}
}
private int _width;
public int Width
{
get
{
return _width;
}
set
{
_width = value;
OnPropertyChanged("Width");
}
}
어떤 아이디어가? 읽기 전용 종속성 속성에 설정하면 WPF가 크게 바인딩을 거부로
올바른 'DataContext'가 있습니까? –
동일한 View/ViewModel에 대한 다른 DataBinding에 문제가 없으므로 그렇게 가정합니다. – benjgorman
그런 다음 값을 변경할 때 가로 세로 비율을 유지하지 마십시오. 테두리의 모서리 반경에만 표시되기 때문입니다. –