Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/mercurial/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Uwp 如何在通用平台中绑定Grid ColumnDefinition.Width?_Uwp_Uwp Xaml - Fatal编程技术网

Uwp 如何在通用平台中绑定Grid ColumnDefinition.Width?

Uwp 如何在通用平台中绑定Grid ColumnDefinition.Width?,uwp,uwp-xaml,Uwp,Uwp Xaml,对不起,我没有找到答案 <Grid x:Name="MyGrid" Background="LightGray" > <Grid.ColumnDefinitions > <ColumnDefinition MaxWidth="30"/> <ColumnDefinition Width="{Binding Column1 , Mode=TwoWay}"/> <ColumnDefinition MaxWidth="30

对不起,我没有找到答案

<Grid x:Name="MyGrid" Background="LightGray" >
  <Grid.ColumnDefinitions >
    <ColumnDefinition MaxWidth="30"/>
    <ColumnDefinition Width="{Binding Column1 , Mode=TwoWay}"/>
    <ColumnDefinition MaxWidth="30"/>
  </Grid.ColumnDefinitions>
  <Grid Grid.Column="0">
    <TextBox Text="0"/>
  </Grid>
  <Grid Grid.Column="1">
    <TextBox Text="1"/>
  </Grid>
  <Grid Grid.Column="2">
    <TextBox Text="2"/>
  </Grid>
</Grid>
这个代码有什么问题? 顺便问一下,是否能够在xaml中离开Grid.ColumnDefinitions部分并直接为列设置ColumnDefinition属性(不要为代码隐藏中的每个属性设置变量)

如果要在页面隐藏代码中绑定
Column1
属性,请使用DataContext作为默认源,您应该指定此页面的数据上下文,因此只需在主页的构造函数中添加以下代码

public主页()
{
this.InitializeComponent();
//添加此代码以指定绑定的数据上下文
this.DataContext=this;
}
---更新---

通常,我们使用绑定来绑定数据模型的属性,如果您想通过更改代码隐藏中的一些参数来更改列/网格值,您可以实现接口并使属性订阅事件,下面是基于上述代码的简单代码示例

在xaml中,我添加了一个按钮来更改其click事件中的
Column1
属性


下面是实现接口的代码

公共密封部分类主页面:第页,INotifyPropertyChanged
{
私有网格长度_column1=新网格长度(20);
公共事件属性更改事件处理程序属性更改;
私有void OnPropertyChanged(字符串PropertyName)
{
if(PropertyChanged!=null)
{
PropertyChanged(这是新的PropertyChangedEventArgs(PropertyName));
}
}
公共网格长度列1
{
得到
{
返回第1列;
}
设置
{
_第1列=数值;
不动产变更(“第1列”);
}
}
公共主页()
{
this.InitializeComponent();
//添加此代码以指定绑定的数据上下文
this.DataContext=this;
}
双倍宽度=20;
私有无效按钮\u单击(对象发送者,路由目标e)
{
Column1=新网格长度(宽度+=10);
}
}

您必须实现
INotifyPropertyChanged
。感谢您的回答,我实现了它,但它没有任何帮助。还有其他想法吗?我看到
GridLength
Value
属性是只读的(没有设置方法)。您可以定义类型为double的
DependencyProperty
,并向其注册
PropertyChangedCallback
,以更改特定列的宽度。非常感谢您的回答。绑定数据真的很酷(如果我理解正确的话),但也许我写得不够清楚,我想根据代码后面的一些参数来改变列/网格设计。再次感谢您的回答。@user1820916我已经更新了我的答案,您可以检查一下。如果您不熟悉数据绑定,并且想了解更多信息,我建议您查看文档并进行分析。噢,非常感谢!你完全正确,我是全新的。
public sealed partial class MainPage : Page
{
  private GridLength _column1 = new GridLength(10);
  public GridLength Column1
  {
    get
    {
      return _column1;
    }
    set
    {
     _column1 = value;
    }
  }

  public MainPage()
  {
    this.InitializeComponent();
  }
}