我有一個ListView控件有3列:名稱,姓氏和地址。我希望所有3列具有相同的寬度。我想出的唯一辦法是給每個列的寬度綁定到祖先的ActualWidth的,並使用一個轉換器由3分這個寬度如下:如何使用相對綁定模式= FindAncestor
<GroupBox>
<ListView Name="People" ItemsSource="{Binding peopleList}">
<ListView.View>
<GridView >
<GridViewColumn Header="name" DisplayMemberBinding="{Binding Name}">
<GridViewColumn.Width>
<Binding Path="ActualWidth" Source="{RelativeSource Mode=FindAncestor, AncestorType={x:Type GroupBox}}" Converter ="{StaticResource ListViewConverter}"/>
</GridViewColumn.Width>
<GridViewColumn Header="surname" ...>
...
</GridViewColumn>
<GridViewColumn Header="address" ...>
...
</GridViewColumn>
</GridViewColumn>
</GridView>
</ListView.View>
</ListView>
</GroupBox>
皈依類是:
class ListViewConverter: IValueConverter
{
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
double state = (double)value;
return state/3;
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
return null;
}
}
但這不起作用。我認爲GroupBox可能不是GridViewColumn.Width的祖先。 也許我錯了,有一個更簡單的方法來做到這一點?