我创建了一个包含3列的ListView,其中存储了一个拆分的日志(我的最后一个问题)。
在我的ViewModel中,Date/Time列的大小是它的两倍。我还添加了一个更改此大小的按钮。
通常情况下,自动调整的宽度设置为"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,因为它似乎在手动调整大小时获得了另一个不可更改的属性
发布于 2019-10-17 07:12:51
当您在某个属性上设置一个值时,该值将有效地覆盖该属性上的任何绑定。除非属性被标记为默认绑定双向,或者您绑定了双向。
Further explanation and example code
当用户拖动列时,我应该认为该过程在宽度上设置了一个值。这将具有上面解释的效果。
要尝试的第一件事是将绑定更改为:
Width="{Binding DateWidth, Mode=TwoWay}"
您还没有完全解释您的视图模型,因此可能需要进行其他更改才能使您的应用程序按预期运行。
https://stackoverflow.com/questions/58426333
复制