0

コードビハインドで行われる計算に基づいて、リストビューのデータテンプレート内の列定義の幅を設定する必要があります。だから私はこれを得た:

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

この Datatemplate は、ItemTemplate として ListView にバインドされます。「gridColumnGraph」にアクセスするにはどうすればよいですか? アイテムが選択されたときではなく、リストビューが表示される前にこのアクセスが必要です。

どうもありがとう!

4

1 に答える 1

1

Databinding を使用して、Columndefinition.Width-Property をコード ビハインドまたは ViewModel のいずれかのプロパティにバインドします。

ViewModel が INotifiyPropertyChanged を継承していることを確認してください。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 に答える