我是xaml或wpf的新手,我正在尝试使用Windows 10 Universal App。
我想做的很简单。
我发现Frame的属性名为CanGoForward。如果该属性为真,我想让一个按钮可见,如果它属于假,我想折叠。
我创建了一个这样的转换器:
public class BooleanToVisibilityConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, string language)
{
if (parameter != null && parameter.ToString() == "Collapsed")
return Visibility.Collapsed;
if (parameter != null && parameter.ToString() == "invert") value = !((bool)value);
return (value is bool && (bool)value) ? Visibility.Visible : Visibility.Collapsed;
}
public object ConvertBack(object value, Type targetType, object parameter, string language)
{
if (parameter != null && parameter.ToString() == "Collapsed")
return false;
var result = value is Visibility && (Visibility)value == Visibility.Visible;
if (parameter != null && parameter.ToString() == "invert") result = !result;
return result;
}
}
在页面资源上定义,如:
<Page.Resources>
<converters:BooleanToVisibilityConverter x:Key="BooleanToVisibilityConverter" />
</Page.Resources>
按钮的xaml是:
<Button x:Name="button"
Visibility="{Binding CanGoForward, Converter={StaticResource BooleanToVisibilityConverter}}"
Content="Button" HorizontalAlignment="Left" Margin="59,142,0,0" VerticalAlignment="Top" Click="button_Click" />
但这没有任何作用,按钮始终可见。这是我第一次使用xaml,所以我确定我做了一些奇怪的事情并且缺少一些概念。
如果有(可能还没有)Windows 10 Universal App编程的一些指导/教程/介绍,您可以指点我,这将非常受欢迎。
已经看过/阅读过关于网络和复数的wpf的一些教程,但我发现它们与Windows 10 UAP有所不同,我需要能够解释其基础知识的东西。
答案 0 :(得分:1)
Button的DataContext可能不是Frame,所以你在一些未知(来自片段)对象上绑定到CanGoForward。如果将DataContext设置为具有正确CanGoForward属性的控件,则代码看起来应该有效。
也就是说,执行此操作的典型方法是绑定到Command而不是直接管理可见性。这是在https://github.com/Microsoft/Windows-universal-samples/tree/master/xaml_xamluibasics的Xaml UI Basics示例中的后退按钮演示的(此代码的Windows 8.1版本是使用Basic Page模板生成的,默认情况下包含在Grid App和Split App模板中)。 GoForewardCommand在Common / NavigationHelper.cs文件中定义并使用Common / RelayCommand.cs
<Button x:Name="forwardButton" Height="48" Width="48" FontSize="20" HorizontalContentAlignment="Center" VerticalContentAlignment="Center"
Style="{StaticResource ForwardButtonStyle}"
Command="{x:Bind GoForwardCommand}"
AutomationProperties.Name="Forward"
AutomationProperties.AutomationId="ForwardButton"
AutomationProperties.ItemType="Navigation Button"
/>
默认情况下,当GoBackCommand从CanExecute返回false时,后退按钮变暗,但您可以通过将Opacity设置为Disabled状态来更改ForwardButtonStyle(从app.xaml中的BackButtonStyle复制)。设置不透明度比折叠元素更有效,但您可以这样做。不透明度也可以动画。
<VisualState x:Name="Disabled">
<VisualState.Setters>
<Setter Target="ContentPresenter.Opacity" Value="0.0" />
</VisualState.Setters>
</VisualState>