gpt4 book ai didi

c# - Silverlight:在没有代码隐藏的情况下删除内容加载时的加载消息?

转载 作者:太空宇宙 更新时间:2023-11-03 16:50:29 24 4
gpt4 key购买 nike

我正在 Silverlight 中构建一个 wp7 应用程序。我有一些异步加载的内容,以及指示加载尚未完成的消息。一旦内容的列表框不为空,我想让加载消息消失。是否可以仅在 XAML 中执行此操作?像将 Visibility 属性绑定(bind)到 StoryListBox.ItemsSource.IsEmpty 之类的东西?

StoryListBox 通过在数据可用后将其 ItemsSource 设置为可观察集合来填充。

    <TextBox x:Name="LoadingMessage"  Text="Loading..." Grid.Row="0" />
<ProgressBar x:Name="LoadingProgress" IsIndeterminate="True" Style="{StaticResource PerformanceProgressBar}" />

<ListBox x:Name="StoryListBox" Grid.Row="0" />

更新:我尝试了以下方法,但它不起作用:

  <StackPanel x:Name="Loading" Grid.Row="0" Visibility="{Binding StoryListBox.ItemsSource.IsEmpty, Converter={StaticResource visibilityConverter}}">
<TextBox Text="Loading..." />
<ProgressBar IsIndeterminate="True" Style="{StaticResource PerformanceProgressBar}" />
</StackPanel>

<ListBox x:Name="StoryListBox" Grid.Row="1" />

Loading 堆栈面板永远不会折叠。

最佳答案

您似乎已经回答了您自己的问题。是的,您可以简单地将 Visibility(或 BusyIndi​​cator 控件上的 Busy/IsBusy)绑定(bind)到另一个控件的某些属性。

如果您要绑定(bind)的特定属性不是可绑定(bind)属性,只需绑定(bind)到其他控件并自定义转换器以获取您想要的成员属性。如果您有具体的代码示例,只需发布​​它们,我可以发布更具体的解决方案。

通常的问题是类型(为了可见性)与 bool 值不兼容,因此您需要在绑定(bind)中指定一个转换器。 Google for Silverlight VisibilityConvertor(一毛钱一打)。这是我的:

namespace Common.ValueConverters
{
using System;
using System.Windows;
using System.Windows.Data;

public class VisibilityConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
if (value is bool?)
{
if (string.IsNullOrEmpty((string)parameter))
{
return (value as bool?).Value ? Visibility.Visible : Visibility.Collapsed;
}
else
{
return (value as bool?).Value ? Visibility.Collapsed : Visibility.Visible;
}
}
throw new ArgumentException();
}

public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
throw new NotImplementedException();
}
}
}

转换器的使用如下所示:

<Grid Visibility="{Binding ShowDualView, Converter={StaticResource VisibilityConverter}}">

但坦率地说,您最好使用绑定(bind)到 IsBusy 属性的 BusyIndi​​cator 控件:

<Controls:BusyIndicator IsBusy="{Binding IsBusy}">

只需将它放在您希望被繁忙显示隐藏的控件周围即可。

关于c# - Silverlight:在没有代码隐藏的情况下删除内容加载时的加载消息?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4098762/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com