2012-04-21 12 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> 

そして、私のViewModelで:

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に結合必要があります。

関連する問題