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