【问题标题】:How to force ListView Columns to use Bindings for Width如何强制 ListView 列使用宽度绑定
【发布时间】:2019-10-17 15:12:51
【问题描述】:

我创建了一个包含 3 列的 ListView,其中存储了拆分的日志(我的最后一个问题)。

日期/时间列在我的 ViewModel 中通过 Double 获得它的大小。我还添加了一个按钮来改变这个大小。

通常它设置为“Double.NaN”用于自动调整大小,但是当您停用该按钮时,宽度设置为 0。这工作正常,但是当我手动调整列大小时,它不会再改变它的大小了,即使绑定值发生了变化。

这是我的 ListView 中的代码。

private void HideDate(object obj)
    {
        // FillListView(false);
        DateWidth = 0;
    }

    private void ShowDate(object obj)
    {
        // FillListView();
        DateWidth = Double.NaN;
    }

我使用 Messenger 来触发这些方法,效果很好。这是我的 ListView 的 xaml:

<ListView ItemsSource="{Binding LogEventList}">
        <ListView.Resources>
            <Style TargetType="GridViewColumnHeader">
                <Setter Property="Padding" Value="4,0,0,0" />
                <Setter Property="HorizontalContentAlignment" Value="Left" />
            </Style>
        </ListView.Resources>
        <ListView.View>
            <GridView>
                <GridView.Columns>
                    <GridViewColumn Header="Date/Time" DisplayMemberBinding="{Binding Date}" Width="{Binding DateWidth}"/>
                    <GridViewColumn Header="Category" DisplayMemberBinding="{Binding Category}" Width="Auto" />
                    <GridViewColumn Header="Event" DisplayMemberBinding="{Binding Event}" Width="Auto" />
                </GridView.Columns>
            </GridView>
        </ListView.View>
    </ListView>

我能否以某种方式告诉 ListView 在更改时使用 DateWidth,因为它似乎在手动调整大小时获得了另一个不可更改的属性

【问题讨论】:

  • DateWidth 是 ViewModel 属性还是存在于模型中?你在哪里有显示/隐藏方法?
  • DateWidth 与方法一起在 ViewModel 中
  • 那么您希望在这里手动更改列宽时通知 DateWidth 属性?

标签: c# wpf listview


【解决方案1】:

当您在属性上设置一个值时,该值将有效地覆盖该属性上的任何绑定。除非该属性被标记为默认绑定双向或您绑定双向。

Further explanation and example code

当用户拖动一列时,我应该认为该过程会设置宽度值。这将产生上面解释的效果。

首先要尝试将绑定更改为:

Width="{Binding DateWidth, Mode=TwoWay}"

您尚未完全解释您的视图模型,因此可能需要进行其他更改才能使您的应用按预期运行。

【讨论】:

  • 做到了。谢谢!
猜你喜欢
  • 2017-01-06
  • 2020-09-13
  • 2013-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-05-17
  • 2017-06-14
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多