首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >WrapPanel宽度绑定

WrapPanel宽度绑定
EN

Stack Overflow用户
提问于 2011-02-17 12:09:37
回答 1查看 960关注 0票数 1

如何将WrapPanel宽度绑定到ListView第一列的宽度。这两个控件都在用户控件中。

EN

回答 1

Stack Overflow用户

发布于 2011-02-17 12:47:33

对于GridViewColumn,您有ActualWidth属性,它不是依赖项属性,因此如果直接绑定到它,则在属性更改时不会得到任何更新。然后您就有了Width属性,它是一个依赖项属性,在大多数情况下都会给出正确的值,但并不总是这样,例如,当自动调整大小时。但是,将这两者结合起来会给您带来预期的结果。也就是说,侦听宽度属性中的更改,然后返回带有ActualWidth的MultiBinding。

Xaml

代码语言:javascript
复制
<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

代码语言:javascript
复制
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();
    }
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5028735

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档