我有一个corev1.connect_get_namespaced_pod_proxy_with_path()
:
ListView
我希望<ListView Grid.Row="4" Grid.Column="1"
ItemsSource="{Binding Path=ListViewAgentItems, Mode=TwoWay}"
HorizontalAlignment="Left"
HorizontalContentAlignment="Left"
SizeChanged="ListView_SizeChanged">
<ListView.View>
<GridView>
<GridViewColumn HeaderContainerStyle="{StaticResource ListViewStyle}" Header="Agent ID" DisplayMemberBinding="{Binding AgentId}"/>
<GridViewColumn HeaderContainerStyle="{StaticResource ListViewStyle}" Header="Distance" DisplayMemberBinding="{Binding Distance}"/>
</GridView>
</ListView.View>
</ListView>
占整个GridView宽度的50%,而不是使列适合其内容宽度的默认行为。当然,GridViewColumn
本身也应该占据其所在列的整个宽度。
所以我添加了ListView
事件:
SizeChanged
发生的事情是该事件不断被调用,并且private void ListView_SizeChanged(object sender, SizeChangedEventArgs e)
{
ListView listView = sender as ListView;
GridView gView = listView.View as GridView;
var workingWidth = listView.ActualWidth - SystemParameters.VerticalScrollBarWidth; // take into account vertical scrollbar
var col1 = 0.5;
var col2 = 0.5;
gView.Columns[0].Width = workingWidth * col1;
gView.Columns[1].Width = workingWidth * col2;
}
的值越来越小,直到达到负值为止,在这种情况下,由于无法设置负值,我遇到了异常到width属性。我该如何解决此问题,并获得每列50%的结果?
答案 0 :(得分:1)
与列表视图相比,使用数据网格仍然更好。
设置水平对齐方式后,控件将具有自动宽度。
因此,您可以计算尺寸,然后控件进行调整,并更改其尺寸,从而再次触发控件。进入自我传播的死亡螺旋。
尝试删除这两行:
HorizontalAlignment="Left"
HorizontalContentAlignment="Left"
您也许还可以更好地处理更改后的窗口大小而不是列表视图。
这大致是一个数据网格的样子:
<DataGrid
AutoGenerateColumns="False"
ItemsSource="{Binding Path=ListViewAgentItems}"
>
<DataGrid.Columns>
<DataGridTextColumn
Width="*"
Header="Agent ID"
Binding="{Binding AgentId}"/>
<DataGridTextColumn
Width="*"
Header="Distance"
Binding="{Binding Distance}"/>
</DataGrid.Columns>
</DataGrid>