WPF数据绑定更改ViewModel中的列宽

时间:2013-01-10 19:06:38

标签: wpf binding

我有一个简单的网格,有3列

<Grid>
   <Grid.ColumnDefinitions>
                <ColumnDefinition Width="{Binding NavigationWidth}"  />
                <ColumnDefinition Width="4" />
                <ColumnDefinition Width="*" />
            </Grid.ColumnDefinitions>
    </Grid.ColumnDefinitions>
</Grid> 

  <GridSplitter Grid.Column="1" Grid.Row="2" 
                      ResizeDirection="Columns" 
                      Background="Silver"                      
                      Width="2" HorizontalAlignment="Center" 
                      VerticalAlignment="Stretch" />

<ContentControl x:Name="navigationView"  Grid.Column="0" Grid.Row="1"/>
<ContentControl x:Name="workspaceView" Grid.Column="2" Grid.Row="1"  />


// The NavigationWidth is belongs to the ViewModel

  public int NavigationWidth
  {
     get{ return _navigationWidth; }
     set{
            _navigationWidth = value;
             OnPropertyChanged("NavigationWidth");
        }
 }

所以基于上面的设置,取决于用户导航到的位置,代码尝试设置网格第一列的宽度。  如果用户没有手动更改宽度,一切正常。

无论如何代码都可以覆盖用户设置的宽度吗?

谢谢,

奥斯汀

1 个答案:

答案 0 :(得分:0)

  

无论如何代码都可以覆盖用户设置的宽度吗?

是的,只要绑定是双向的,就可以在所需的时间/位置设置值NavigationWidth,例如:

<ColumnDefinition Width="{Binding NavigationWidth, Mode=TwoWay}