0

我需要根据在后面的代码中完成的一些计算,在数据模板中为列表视图设置列定义的宽度。所以我得到了这个:

<DataTemplate x:Key="dataTemplateForListview">
        <Border>
        <Grid>                
            <Grid.ColumnDefinitions>
                <ColumnDefinition Width="80" x:Name="gridColumnGraph" />
                <ColumnDefinition Width="*" />
            </Grid.ColumnDefinitions>
         ...
        </Grid>
       </Border>
</DataTemplate>

此数据模板作为 ItemTemplate 绑定到 ListView。如何访问“gridColumnGraph”?在显示列表视图之前,我需要此访问权限 - 而不是在选择项目时。

非常感谢!

4

1 回答 1

1

使用数据绑定将 Columndefinition.Width-Property 绑定到代码隐藏或 ViewModel 中的属性之一。

确保您的 ViewModel 继承自 INotifyPropertyChanged。创建一个调用 PropertyChanged-Event 的方法:

public event PropertyChangedEventHandler PropertyChanged;
protected virtual void OnPropertyChanged(string propertyName)
{
    PropertyChangedEventHandler handler = PropertyChanged;
    if (handler != null)
    {
        var e = new PropertyChangedEventArgs(propertyName);
        handler(this, e);
    }
}

创建属性:

private double _cdWidth;
public double CDWidth
{
    get { return _cdWidth; }
    set { _cdWidth= value; OnPropertyChanged("CDWidth"); }
}

绑定到属性:

<ColumnDefinition Width={Binding Path=CDWidth}/>

将 DataContext 设置为 ViewModel:

this.DataContext = new ViewModel();

在代码隐藏中更改 CDWidth:

ViewModel vm = (ViewModel)this.DataContext;
vm.CDWidth = 10;
于 2012-09-28T10:55:12.493 回答