C# 如何强制ListView列使用宽度绑定

C# 如何强制ListView列使用宽度绑定,c#,wpf,listview,C#,Wpf,Listview,我创建了一个包含3列的ListView,其中存储了一个拆分的日志(我的最后一个问题) “日期/时间”列在我的ViewModel中的大小是原来的两倍。我还添加了一个按钮,可以改变这个大小 通常情况下,它会设置为“Double.NaN”以自动调整大小,但当您停用该按钮时,宽度会设置为0。这很好,但是当我手动调整列的大小时,它不会再改变它的大小,即使绑定值改变了 这是我的ListView中的代码 private void HideDate(object obj) { // Fi

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

“日期/时间”列在我的ViewModel中的大小是原来的两倍。我还添加了一个按钮,可以改变这个大小

通常情况下,它会设置为“Double.NaN”以自动调整大小,但当您停用该按钮时,宽度会设置为0。这很好,但是当我手动调整列的大小时,它不会再改变它的大小,即使绑定值改变了

这是我的ListView中的代码

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

    private void ShowDate(object obj)
    {
        // FillListView();
        DateWidth = Double.NaN;
    }
我用信使触发这些方法,效果很好。这是我的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,因为当您在属性上设置一个值,该值将有效覆盖该属性上的任何绑定时,它似乎会在手动调整大小时获得另一个不可更改的属性。除非该属性在默认情况下标记为bind twoway或您绑定twoway

当用户拖动一列时,我应该认为该进程设置了一个宽度值。这将产生上述效果

首先尝试将绑定更改为:

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

您尚未完全解释viewmodel,因此可能需要进行其他更改以使您的应用程序按预期运行。

DateWidth是viewmodel属性还是模型中存在?在哪里有show/hide方法?DateWidth与方法一起在ViewModel中。这里您希望在手动更改列的宽度时通知DateWidth属性?就是这样。谢谢