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

WPF数据绑定更改ViewModel中的列宽,wpf,binding,Wpf,Binding,我有一个3列的简单网格 <Grid> <Grid.ColumnDefinitions> <ColumnDefinition Width="{Binding NavigationWidth}" /> <ColumnDefinition Width="4" /> <ColumnDefinition Width="*" />

我有一个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");
        }
 }

//NavigationWidth属于ViewModel
公共int导航宽度
{
获取{return\u navigationWidth;}
设置{
_导航宽度=值;
OnPropertyChanged(“导航宽度”);
}
}
因此,基于上面的设置,取决于用户导航到的位置,代码尝试设置网格第一列的宽度。 如果用户不手动更改宽度,一切正常

代码是否可以覆盖用户设置的宽度

谢谢

奥斯汀

代码是否可以覆盖用户设置的宽度

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

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

只要用户不通过移动网格纵切机来更改宽度,上述代码就可以正常工作。@AustinTX将网格属性更改为不允许调整大小。但如果用户愿意,则希望手动更改宽度。@AustinTX我不明白…什么是“不工作”当用户更改它时,您提到的好情况?值是否不正确,或者是否发生了明显的意外情况?不工作意味着一旦用户手动移动网格切割器,ViewModel中的代码对UI没有影响。