我有一个看似简单的WPF应用程序的问题。我使用MahApps.Metro' s MetroWindow
作为我的主窗口,它允许我在窗口顶部放置按钮。按照入门示例,我在窗口顶部放置了几个按钮。其中一个按钮是一个刷新按钮,允许用户刷新另一个控件的内容(Awesomium WebControl
)。我想要做的是以某种方式将刷新按钮绑定到WebControl
的{{1}}属性(这是一个布尔值),以便在浏览器导航时按钮上的图像发生变化。
以下是我用于按钮的XAML:
IsNavigating
请记住,我对WPF很新。
答案 0 :(得分:4)
您需要创建一个这样的转换器:
public class BoolVisibilityConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
return (bool)value ? Visibility.Visible : Visibility.Collapsed;
}
public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
throw new NotImplementedException();
}
}
然后在您的视图中将转换器包含为资源,如下所示:
<Window.Resources>
<ResourceDictionary>
<converters:BoolVisibilityConverter x:Key="BoolVisibilityConverter"/>
</ResourceDictionary>
</Window.Resources>
然后在按钮上使用如下:
Visibility="{Binding Path=IsNavigating, Converter={StaticResource BoolVisibilityConverter}}"
希望这有帮助!
答案 1 :(得分:1)
你需要编写一个简单的转换器才能做到这一点。快速搜索BooleanToVisibility转换器,你就会明白这一点。
答案 2 :(得分:0)
使用转换器是一种方法。但是,我指的是在viewmodel中使用触发器绑定到IsNavigating。
<Button x:Name="C_BTN_Refresh" Click="C_BTN_Refresh_Click">
<Button.Style>
<Style>
<Style.Triggers>
<DataTrigger Binding="{Binding IsNavigating}" Value="True">
<Setter Property="UIElement.Visibility" Value="Visible"/>
</DataTrigger>
<DataTrigger Binding="{Binding QuickDrawBarPinned}" Value="False">
<Setter Property="UIElement.Visibility" Value="Collapsed"/>
</DataTrigger>
</Style.Triggers>
</Style>
</Button.Style>
<StackPanel Orientation="Horizontal">
<Rectangle Width="15" Height="15" Fill="{Binding Foreground, RelativeSource={RelativeSource AncestorType={x:Type Button}}}">
<Rectangle.OpacityMask>
<VisualBrush Stretch="Fill" />
</Rectangle.OpacityMask>
</Rectangle>
</StackPanel>
</Button>
希望得到这个帮助。