M. *_*ley 24 wpf xaml binding togglebutton
我想使用WPF ToggleButton来扩展和折叠我的应用程序中的一些控件.我如何使用XAML来实现这一目标?
我想,我可以在某种程度上绑定Visibility一些控件的属性到ToggleButton的IsChecked状态,但我不知道如何做到这一点.
也许我需要给我ToggleButton一个Name,然后使用绑定ElementName?然后我需要一个ValueConverter布尔值和可见性之间的转换,对吗?我怎么能ValueConverter为此目的制作通用的?
Mar*_*age 44
你需要Visibility通过转换器绑定:
<Window
x:Class="WpfApplication1.Window1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<Window.Resources>
<BooleanToVisibilityConverter x:Key="BooleanToVisibilityConverter"/>
</Window.Resources>
<StackPanel>
<ToggleButton x:Name="toggleButton" Content="Toggle"/>
<TextBlock
Text="Some text"
Visibility="{Binding IsChecked, ElementName=toggleButton, Converter={StaticResource BooleanToVisibilityConverter}}"/>
</StackPanel>
</Window>
Run Code Online (Sandbox Code Playgroud)
在Silverlight中没有,BooleanToVisibilityConverter但很容易编写自己的一些附加功能:
using System;
using System.Globalization;
using System.Windows;
using System.Windows.Data;
namespace WpfApplication1 {
public class BooleanToVisibilityConverter : IValueConverter {
public Object Convert(Object value, Type targetType, Object parameter, CultureInfo culture) {
if (targetType == typeof(Visibility)) {
var visible = System.Convert.ToBoolean(value, culture);
if (InvertVisibility)
visible = !visible;
return visible ? Visibility.Visible : Visibility.Collapsed;
}
throw new InvalidOperationException("Converter can only convert to value of type Visibility.");
}
public Object ConvertBack(Object value, Type targetType, Object parameter, CultureInfo culture) {
throw new InvalidOperationException("Converter cannot convert back.");
}
public Boolean InvertVisibility { get; set; }
}
}
Run Code Online (Sandbox Code Playgroud)
现在,您可以指定映射转换器true来Collapsed和false到Visible:
<BooleanToVisibilityConverter
x:Key="InverseBooleanToVisibilityConverter" InvertVisibility="True"/>
Run Code Online (Sandbox Code Playgroud)
使用BooleanToVisibilityConverter:
<BooleanToVisibilityConverter x:Key="bvc" />
<TextBlock Visibility="{Binding IsChecked, ElementName=toggle, Converter={StaticResource bvc}}" />
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
35910 次 |
| 最近记录: |