1
ListView의 첫 번째 열 너비에 WrapPanel 너비를 바인딩하려면 어떻게해야합니까? 두 컨트롤 모두 사용자 컨트롤입니다.WrapPanel 너비 바인딩
ListView의 첫 번째 열 너비에 WrapPanel 너비를 바인딩하려면 어떻게해야합니까? 두 컨트롤 모두 사용자 컨트롤입니다.WrapPanel 너비 바인딩
GridViewColumn의 경우 종속성 속성이 아닌 ActualWidth
속성이 있으므로 직접 바인딩하면 속성이 변경 될 때 업데이트되지 않습니다. 그런 다음 종속성 속성 인 Width 속성을 가지며 대부분의 경우 올바른 값을 제공하지만 자동 크기 조정의 경우 항상 그렇습니다. 이 두 가지를 결합하면 원하는 결과를 얻을 수 있습니다. 즉
XAML을 Width 속성의 변화를 듣고와 MultiBinding와 ActualWidth 반환이다
<WrapPanel ...>
<WrapPanel.Width>
<MultiBinding Converter="{StaticResource GridViewColumnWidthMultiConverter}">
<Binding ElementName="listView" Path="View.Columns[0].Width"/>
<Binding ElementName="listView" Path="View.Columns[0].ActualWidth"/>
</MultiBinding>
</WrapPanel.Width>
</WrapPanel>
<ListView Name="listView" ...>
<ListView.View>
<GridView>
<GridView.Columns>
<GridViewColumn .../>
<GridViewColumn .../>
<GridViewColumn .../>
<!--...-->
</GridView.Columns>
</GridView>
</ListView.View>
</ListView>
GridViewColumnWidthMultiConverter
public class GridViewColumnWidthMultiConverter : IMultiValueConverter
{
public object Convert(object[] values, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
double width = (double)values[0];
double actualWidth = (double)values[1];
return actualWidth;
}
public object[] ConvertBack(object value, Type[] targetTypes, object parameter, System.Globalization.CultureInfo culture)
{
throw new NotImplementedException();
}
}