【发布时间】: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 属性?