2012-04-21 3 views
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가 크게 바인딩을 거부로

+0

올바른 'DataContext'가 있습니까? –

+0

동일한 View/ViewModel에 대한 다른 DataBinding에 문제가 없으므로 그렇게 가정합니다. – benjgorman

+0

그런 다음 값을 변경할 때 가로 세로 비율을 유지하지 마십시오. 테두리의 모서리 반경에만 표시되기 때문입니다. –

답변

0

당신은 지금까지 그 어떤 좋은 솔루션을 보았다, 이러한 속성은 읽기 전용입니다 같은 OneWayToSourceActualWidth/Height에 바인딩해야합니다.

관련 문제