我正在使用 Microsoft.Toolkit.Uwp.UI.Controls 中的 GridSplitter。在用户使用网格拆分器调整两列大小后,是否有办法重置调整大小并使网格的列宽恢复到调整大小之前的正常宽度?
背景故事:
我有一个页面,在网格中显示两个彼此相邻的用户控件。我在它们之间使用 gridsplitter 以允许用户调整列的大小。
基于其他交互,显示在网格中的用户控件会发生变化。当我“导航”(即更改网格中的用户控件)时,我想将列宽重置为其原始值(在我的情况下,它们以 * 和 2* 开头,因此我希望将列重置回 1/3和 2/3s 大小)。
重置网格列宽的最佳方法是什么?
我试图将我创建的一些异步方法链接在一起,我相信对于我如何工作有一些根本的误解
这是我的代码的表示:
public async Task<bool> LoadFoo()
{
return await Foo.ReadAsync("bar").ContinueWith((bar) =>
{
Foo.ReadAsync("baz").ContinueWith((baz) =>
{
Foo.ReadAsync("qux").ContinueWith((qux) =>
{
return true;
});
return true;
});
return true;
});
}
public void LoadEverything()
{
LoadFoo().ContinueWith((blah) =>
{
OtherLoadMethod();
});
}
Run Code Online (Sandbox Code Playgroud)
现在我期待调用LoadEverything()时,LoadFoo("bar","baz"和"qux")中的所有ReadAsync方法都会运行并完成,并且在它们全部完成之后,在LoadEverything中的.Continue将运行这样,在"bar","baz"和"qux"ReadAsync方法完成之前,OtherLoadMethod()不会执行.
我实际看到的是LoadFoo被调用,然后在LoadFoo中获得最终完成之前,OtherLoadMethod开始运行(继续使用"qux"ReadAsync).
有人可以帮助澄清我的错误吗?为什么在ReadAsync("qux")完成并返回true之前,不会执行OtherLoadMethod?
我还有另一个关于将可见性绑定到列表视图项目的问题,并且得到了解答。
我现在遇到的问题是我试图将可见性绑定到列表视图项的属性,但它似乎不起作用。
这是我的代码:
<ListView
ItemsSource="{Binding FooList}"
ItemTemplate="{StaticResource FooTemplate}"
Grid.Row="3">
<ListView.ItemContainerStyle>
<Style TargetType="ListViewItem">
<Setter Property="Padding" Value="0" />
<Setter Property="MinHeight" Value="0" />
<Setter Property="HorizontalContentAlignment" Value="Stretch"/>
</Style>
</ListView.ItemContainerStyle>
</ListView>
Run Code Online (Sandbox Code Playgroud)
和模板:
<DataTemplate x:Key="FooTemplate">
<Grid Background="White" HorizontalAlignment="Stretch">
//template stuff
</Grid>
Run Code Online (Sandbox Code Playgroud)
如果我尝试在模板中设置网格的可见性,它会正确绑定,并且不会显示不应显示的 Foo 项目,但容器的空间仍然存在,只是空白。
如果我尝试在 ItemContainer 中设置可见性绑定:
<Setter Property="Visibility" Value="{Binding FooVisibility}" />
Run Code Online (Sandbox Code Playgroud)
那么 FooVisibility 属性永远不会被调用。
如果我有一个返回 Visibility 枚举的适当属性,那么隐藏特定 ListView 项目的适当方法是什么?
我有一个网格,其中一行具有 Height="Auto"。
在该行中,我有一个绑定到显示字符串列表的列表视图。
当这些项目出现在列表视图中时,它们周围会有一堆额外的空白(如果我设置项目的背景,则文本周围会出现该颜色的窄带,然后在项目之间出现一堆空白)。我没有在任何地方设置任何边距或填充,只是一个绑定到我的集合的基本列表视图。
如何让项目彼此紧贴地显示,而不是在它们之间有一堆空白
这是相关的 XAML:
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
<RowDefinition />
</Grid.RowDefinitions>
<ListView ItemsSource="{Binding DisplayItems}" Grid.Row="0" DisplayMemberPath="DisplayString" />
Run Code Online (Sandbox Code Playgroud)